FileFilter
其中只有一个待实现方法
boolean accept(File pathName);//测试指定抽象路径名是否应该包含在某个路径名列表中。
FilenameFilter
其中也只有一个待实现方法
boolean accept(File dir ,String name);//测试指定文件是否应该包含在某一文件列表中。
在File对象中有重载的方法
Stirng[] list(FilenameFilter filter);
//将调用filter中的accept方法,返回true的将被保存到String数组,返回。
//参数dir是list的调用对象this,name是this目录的子目录/文件名
源码如下:
public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
List<String> v = new ArrayList<>();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return v.toArray(new String[v.size()]);
}
File[] listFiles(FileFilter filter);
//将调用filter中的accept方法,返回true的将被保存到File数组,返回。
//其中payhName为调用对象this的子目录/文件对应File对象
源码如下:
public File[] listFiles(FileFilter filter) {
String ss[] = list();
if (ss == null) return null;
ArrayList<File> files = new ArrayList<>();
for (String s : ss) {
File f = new File(s, this);
if ((filter == null) || filter.accept(f))
files.add(f);
}
return files.toArray(new File[files.size()]);
}
File[] listFiles(FilenameFilter filter);
//类似与Stirng[] list(FilenameFilter filter);