File类代表与平台无关的文件、目录操作。File类可以操作文件、目录本身,但不能访问、修改文件的内容。
1、构造函数
File(String path);
1 //.代表当前项目的根目录 2 File file=new File("./1.txt");
Windows中用,要转义,\。 Linux、Unix中用/。 最好直接用/,/是跨平台的。
2、操作名称、路径
String getName() //获取文件/目录名,文件名包括后缀。是获取构造函数参数中的文件名,就是说文件不一定真实存在。
String getPath() //获取路径,即返回构造函数的参数。
String getAbsolutePath() //获取绝对路径
File getAbsoluteFile() //返回当前File对象的绝对路径的File对象
String getParent() //文件——返回所在目录的路径,路径——返回父目录的路径。返回的是构造函数参数中对应的部分,并不一定是绝对路径。所以有时需要getAbsoluteFile转换为绝对路径的File对象。
boolean renameTo(File file) //重命名文件/目录,返回结果
3、检测
boolean exists()
boolean canWrite()
boolean canRead()
boolean isFile() //是否是文件
boolean isDirectory //是否是目录
boolean isAbsolute() //构造函数的参数是否是绝对路径
4、设置读写权限
setReadable(boolean b) //是否可读
setReadonly() //设置为只读
setReadable(boolean isReadable, boolean isReadonly)
write的三个方法同上。
5、获取相关信息
long length() 文件/文件夹的大小,默认以字节为单位
long lastModified() 最后修改时间,以时间戳形式返回
6、新建、删除操作
boolean createNewFile() //新建文件,如果前面的路径不存在,会自动创建,比如 D:java est1.txt,如果java、test文件夹不存在,会自动创建
boolean mkdir() //新建文件夹,如果前面的路径不存在,则此句代码不做任何操作(空操作)。比如 D:java est,如果java这个文件夹不存在,不会自动创建java、test文件夹,即什么也不做。
boolean mkdirs() //新建文件夹,如果前面的路径不存在,会自动创建。比如 D:java est,如果java文件不存在,会自动创建java文件夹,再创建test文件夹。一般都是用mkdirs()。
boolean delete() //删除文件/文件夹
void deleteOnExit() //注册一个删除钩子,在JVM退出时才删除文件/文件夹
static File createTempFile(String prefix, String suffix) 在OS默认的临时文件目录中创建一个临时的空文件,使用prefix(文件名前缀,至少3字节长)、系统生成的随机数、suffix(文件后缀名)作为文件名。
static File createTempFile(String prefix, String suffix, File directory) //在指定目录下新建一个临时空文件。
以上2个方法均为File类的静态方法。示例:
1 File.createTempFile("myVideo",".zip"); //C:UserschyAppDataLocalTempmyVideo8395185732784704441.zip
7、获取目录下的所有文件、子文件夹
static File[] listRoots() //返回系统所有盘符的根路径(C:,D:,......),以File对象数组的形式返回。此方法是File类的静态方法。
String[] list() //获取所有的子文件、子文件夹,以String数组形式返回文件名、文件夹名
File[] listFiles() //返回所有的子文件、子文件夹的File对象,以File对象数组的形式返回
以上2个方法均可带一个FilenameFilter类型的参数(文件过滤器),只列出符合条件的文件、文件夹。
FilenameFilter是一个函数式接口,只需实现 accept(File dir, String filename) 方法。
1 //只要txt文件。dir代表子文件夹的File对象,fileName代表子文件名 2 String[] arr=file.list((dir,filename)->filename.endsWith(".txt"));