- java.io.FileFilter是一个接口,是File的过滤器,该接口的对象可以传递给File类的listFiles(FileFilter filter)作为参数,接口当中只有一个方法
- 方法
boolean accept(File pathname): 测试pathname是否应该包含在当前的File目录中,如果符合返回true
public static void main(String[] args) {
File file = new File("C:\\Users\\admin\\Desktop\\Hello");
getAllTxt(file);
}
public static void getAllTxt(File dir) {
File[] files = dir.listFiles(new FileFilterImpl());
for (File f : files){
if(f.isDirectory()){
getAllTxt(f);
}else {
System.out.println(f);
}
}
}
@Override
public boolean accept(File pathname) {
if (pathname.isDirectory()) {
return true;
}
return pathname.getName()
.toLowerCase()
.endsWith(".txt");
}
Lambda优化
public static void main(String[] args) {
File file = new File("C:\\Users\\admin\\Desktop\\Hello");
getAllTxt(file);
}
File[] files = dir.listFiles(new FileFilter(){
@Override
public boolean accept(File pathname){
if (pathname.isDirectory()){
trturn true;
}
return pathname.getName().toLowerCase().endsWith(".txt");
}
});
File[] files = dir.listFiles((File pathname) -> {
return pathname.getName.toLowerCase().endsWith(".txt") || pathname.isDirectory();
});
File[] files = dir.listFiles(pathname -> pathname.getName.toLowerCase().endsWith(".txt") || pathname.isDirectory());