File类
File类是 java.io 包下代表与平台无关的文件和目录。
不管是文件,还是目录都可以使用File来操作。
可以用来新建,重命名,删除文件和目录。
但是不能访问文件内容本身。访问文件本身需要输入/输出流。
public class File
implements Serializable, Comparable<File>
{
}
文件和目录访问
文件名相关方法
- getName(): 返回文件名或路径名
- getPath(): 返回路径
- getAbsoluteFile(): 绝对路径
- getAbsolutePath(): 绝对路径名
- getParent(): 父目录名
- renameTo(): 重命名
文件检测相关方法
- exists(): 文件或目录是否存在
- canWrite(): 文件或目录是否可写
- canRead(): 是否可读
- isFile(): 是否为文件
- isDirectory(): 是否目录
- isAbsolute(): 是否绝对路径
获取文件信息
- lastModified(): 最后修改时间
- length(): 文件内容长度
文件操作
- createNewFile(): 文件不存在时创建
- delete():删除文件或路径
- createTempFile(): 创建临时空文件, 静态方法, 使用给定前缀,系统生成随机数,给定后缀作为文件名, 可以指定目录
- deleteOnExit(): 注册一个删除钩子,JAVA虚拟机退出时,删除文件或目录
目录操作
- mkdir(): 创建目录
- list():返回所有子文件和路径, 返回 String[]
- listFiles():返回所有子文件和路径, 返回 File数组
- listRoots(): 返回根目录列表, 静态方法
使用样例:
File file = new File(".");
System.out.println(file.getName());
System.out.println(file.getParent());
System.out.println(file.getAbsoluteFile());
System.out.println(file.getAbsoluteFile().getParent());
File tmpFile = File.createTempFile("abc", ".txt", file);
System.out.println(tmpFile.exists());
String[] fileList = file.list();
for (String fileName : fileList) {
System.out.println(fileName);
}
File[] roots = File.listRoots();
for(File rootFIle : roots){
System.out.println(rootFIle);
}
//Output
.
null
/Users/testCode/.
/Users/testCode
true
文件过滤器
File类的 list()方法,可以接收 FilenameFilter 参数, 可以只列出符合条件的文件。是一个函数式接口。可以使用Lambda表达式。
@FunctionalInterface
public interface FilenameFilter {
boolean accept(File dir, String name);
}
accept 方法依次对所有文件迭代, 返回true,则列出来
File file = new File(".");
//文件以 .java 结尾,或者是个目录
String[] nameList = file.list(((dir, name) -> name.endsWith(".java") || new File(name).isDirectory()));
for (String fileName : nameList) {
System.out.println(fileName);
}
地址: https://blog.csdn.net/yonggang7/article/details/86772936