45、文件过滤器FilenameFilter
文件过滤器FilenameFilter
JDK中提供了一个FilenameFilter的接口用来实现文件过滤功能,可以使用这个文件过滤器来实现上一节中的问题。
File类中有一个带参数的list方法
public String[] list(FilenameFilter filter)
上面的方法中接收FilenameFilter对象,FilenameFilter是一个接口,里面有一个方法
boolean accept(File dir, String name);
要想使用文件过滤器的话需要重写这个accept方法,在方法里面编写过滤条件,这里接收两个参数,dir就是当前调用这个list方法的File对象,name是这个方法的文件名。
下面是使用FilenameFilter来实现统计项目根目录下以.txt结尾的文件数量,并将文件名打印出来。
package com.sutaoyu.file; import java.io.File; import java.io.FilenameFilter; public class test_5 { public static void main(String[] args) { File file = new File("D:\\java\\Eclipse\\chapter-08\\files\\"); String[] nameArray = file.list(new FilenameFilter() { 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); } } }