用处
创建过滤规则, 用于过滤掉不需要的文件
将过滤规则和程序分开,提高过滤规则代码的复用性,增加了可移植性,提高效率、简化代码开发
使用
- 创建FileFilter接口的实现类,并实现其accept(File pathname)方法,此方法中写过滤规则: 如果想保留该文件,则返回true,如果不需要,则返回false;
- 创建该实现类的对象1
- 调用file的listFIles方法,并传入对象1,返回file下符合过滤规则的file数组a
file.listFiles()方法
package com.recurrence;
import java.io.File;
import java.io.FileFilter;
public class DemoPrintAllFile {
public static void main(String[] args) {
File file = new File("src\\com");
printAllFile(file);
}
/*
文件过滤器FileFilter
采用递归方法遍历打印路径下所有文件
*/
public static void printAllFile(File file){
if(file != null) {
File[] directory = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory() || pathname.getName().equals("i.txt"); //是文件夹或i.txt才保留在directory文件数组中
}
});
for (File f : directory) {
if(f.isDirectory())
printAllFile(f); //使用过滤器
else
System.out.println(f.toString());
}
/* for (File file1 : directory) {
if (file1.isFile()) { //不使用过滤器,
if(file1.getName().equals("i.txt"))
System.out.println(file1);
} else {
printAllFile(file1);
}
}*/
}
}
}
做了几件事:
- 对构造方法中传递的目录进行遍历,获取目录中的每一个文件/文件夹 ---->封装为file对象
- 调用参数传递中的过滤器fileFilter的accept方法
- 把遍历到的每一个对象传递给方法accept的参数pathname
- accept如果返回的是true,则把传递过去的file对象存到file数组a中,如果返回的是false,则不把该对象存到file数组a中。