文件过滤器的作用:更快速的查找文件
使用
█ public String[] list(FilenameFilter filter);
█ public File[] listFiles(FilenameFilter filter);
FilenameFilter
public interface FilenameFilter {
boolean accept(File dir, String name);
}
|
FilenameFilte 是接口,多以使用前要先实例里面的方法 |
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()]);
}
|
这些是源码; |
//导入包省略
public class TestFileMain {
public static void main(String[] args) {
File file = new File("D:\");
String[] filenames = file.list(new MyFileFilter());
//File[] filenames = file.listFiles(new MyFileFilter());
for(int i = 0;i < filenames.length;++i){
System.out.println("filenames: "+filenames[i]);
}
}
}
|
class MyFileFilter implements FilenameFilter{
public boolean accept(File dir, String name) {
//if(name.equals("Test")){ //过滤掉名字叫"Test"的文件或文件夹
if(new File(dir,name).isDirectory()){ //把D盘下所有文件夹过滤掉
return false;
}else{
return true;
}
//return true ;
//返回 true 表示过滤器会把文件加入到返回结果集里,false 表示该文件过滤掉
}
}
|