概述
java.io.FileFilter是一个接口,是File的过滤器。 该接口的对象可以传递给File类的listFiles(FileFilter) 作为参数
方法:
boolean accept(File pathname)
参数pathname表示当前文件对象,如果保留该文件,就返回true,不保留就返回false
实现
- 接口作为参数,需要传递子类对象,重写其中方法。我们选择匿名内部类方式,比较简单。
- 通过过滤器的作用,
listFiles(FileFilter)返回的数组元素中,子文件对象都是符合条件的,可以直接打印。
例子:
查找 .java 文件,在过滤器中实现下面规则:
- 如果后缀是 .java ,就保留
- 如果是目录,就继续遍历。
public class DiGuiDemo4 {
public static void main(String[] args) {
File dir = new File("D:\\aaa");
printDir2(dir);
}
public static void printDir2(File dir) {
// 匿名内部类方式,创建过滤器子类对象
File[] files = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".java")||pathname.isDirectory();
}
});
// 循环打印
for (File file : files) {
if (file.isFile()) {
System.out.println("文件名:" + file.getAbsolutePath());
} else {
printDir2(file);
}
}
}
}