Java文件操作

File、FileFilter

File 类

java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

构造方法

  • public File(String pathname) :将给定的路径名字符串转换为抽象路径名来创建 File实例。
  • public File(String parent, String child) :parent + child = pathname
  • public File(File parent, String child) :从父抽象路径名和子路径名字符串创建 File实例。

获取功能的方法

  • public String getAbsolutePath() :返回此File的绝对路径名字符串。
  • public String getPath() :将此File转换为路径名字符串。
  • public String getName() :返回由此File表示的文件或目录的名称。
  • public long length() :返回由此File表示的文件的长度。 但是File对象表示目录,则返回值未指定。

判断功能的方法

  • public boolean exists() :此File表示的文件或目录是否实际存在。
  • public boolean isDirectory() :此File表示的是否为目录。
  • public boolean isFile() :此File表示的是否为文件。

创建删除功能的方法

  • public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
  • public boolean delete() :删除由此File表示的文件或目录。
  • public boolean mkdir() :创建由此File表示的目录。
  • public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

目录遍历

  • public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。

  • public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。

例子: 递归遍历目录

1
2
3
4
5
6
7
8
9
10
11
12
private static void tree(File dir) {
if (dir == null) return;

File[] files = dir.listFiles();
for (File file : files) {
if (file.isFile()) {
System.out.println(file.getPath());
} else {
tree(file);
}
}
}

文件过滤器

java.io.FileFilter函数式接口,是File的过滤器。

该接口中的方法:boolean accept(File pathname)

该接口的对象可以传递给File类的listFiles 方法。

  • listFiles(FileFilter) 方法
    1. 对目录进行遍历,获取目录中的每一文件/文件夹,并将它们封装成File对象
    2. 调用形参FileFilter对象中的accept方法, 并传入遍历得到的每一个File对象
    3. accept方法返回true,则将该File对象放入File[]数组中。

例子: 找出指定目录下的所有.java文件

1
2
3
4
5
6
7
8
9
10
11
12
private static void findJavaFile(File dir) {
File[] files = dir.listFiles(file -> {
file.getName().endsWith(".java") || file.isDirectory();
});

for (File file : files) {
if (file.isFile())
System.out.println(file.getPath());
else
findJavaFile(file);
}
}

 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×