30、过滤器
1、概述
过滤器是用来定义文件查找中过滤方法的接口
在File中有两个和ListFiles重载的方法,传递的是过滤器
2、方法
File[] listFiles(FileFilter filter)
方法接受一个过滤器,并按过滤器的定义过滤文件,返回的是抽象路径数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
3、接口
FileFilter接口
用来过滤文件
抽象方法:
abstract boolean accept(File f)
返回true则这个文件或目录会被listFiles方法接收
FilenameFilter接口
用于过滤文件名称
抽象方法:
boolean accept(File dir,String name)//测试指定文件是否应该包含在某一文件列表中
参数
- dir代表构造方法中传递的被遍历的目录
- name代表使用listFile方法遍历目录,获取的每一个文件或文件夹的名称
注意:这两个接口都没有实现类,要自己重写方法
4、使用方法
可以写实现类,也可以用匿名内部类
实现类
public class FileFilterImpl implements FileFilter {
@Override
public boolean accept(File pathname) {
//如果是文件夹,也返回true
if (pathname.isDirectory()){
return true;
}
return pathname.getName().toLowerCase().endsWith(".sql");
}
}
该过滤器可以返回所有目录和.sql结尾的文件
匿名内部类
File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//过滤规则
return new File(dir,name).isDirectory() || name.toLowerCase().endsWith(".sql");
}
});