JDK中提供了一个FilenameFilter的接口用来实现文件过滤功能,可以使用这个文件过滤器来实现上一节中的问题。
File类中有一个带参数的list方法
public String[] list(FilenameFilter filter)
上面的方法中接收FilenameFilter对象,FilenameFilter是一个接口,里面有一个方法
boolean accept(File dir, String name);
要想使用文件过滤器的话需要重写这个accept方法,在方法里面编写过滤条件,这里接收两个参数,dir就是当前调用这个list方法的File对象,name是这个方法的文件名。
下面是使用FilenameFilter来实现统计项目根目录下以.txt结尾的文件数量,并将文件名打印出来。
import java.io.File;
import java.io.FilenameFilter;
/**
* 问题:统计项目根目录下以.txt结尾的文件数量,并将文件名打印出来
* 使用文件过滤器实现上述需求
*/
public class FilenameFilterTest01 {
public static void main(String[] args) {
File file = new File("F:\\monkey1024\\01-JavaSE\\代码\\code\\chapter-08");
String[] nameArray = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name){
//获取根目录下每个文件的File对象
File file1 = new File(dir, name);
//编写筛选条件
return file1.isFile() && file1.getName().endsWith(".txt");
}
});
System.out.println("以.txt结尾的文件个数是" + nameArray.length + "个");
for(String name : nameArray){
System.out.println(name);
}
}
}
网友评论