1、Public Interface FileFilter
java.io.FileFilter 接口:一个抽象路径名的过滤器。
该接口的实例可以通过File
类的
方法。接口中的抽象方法:listFiles(FileFilter)
首先,需要定义一个 FileFilter 的实现类,实现接口中的 accept() 方法,在该方法中定义文件过滤的条件。
import java.io.File;
import java.io.FileFilter;
public class FileFilterImpl implements FileFilter {
@Override
public boolean accept(File pathname) {
//过滤文件的条件
//此处举例,过滤的的条件为以".txt"结尾的文件
if(pathname.isDirectory()){
return true;
}
return pathname.getName().toLowerCase().endsWith(".txt");
}
}
然后再在File
类的
方法中实例化该实现类对象,过滤文件。listFiles(FileFilter)
public static void getAllfile01(File dir){
File[] file1 = dir.listFiles(new FileFilterImpl());
for (File f : file1) {
if(f.isDirectory()){
getAllfile01(f);
}else{
String s = f.toString();
if(s.endsWith(".txt"))
System.out.println(f);
}
}
}
当然,你也可以使用lambda表达式实现该类,简化代码。
public static void getAllfile01(File dir){
File[] file1 = dir.listFiles((File pathname)->{
if(pathname.isDirectory()){
return true;
}
return pathname.getName().toLowerCase().endsWith(".txt");
});
for (File f : file1) {
if(f.isDirectory()){
getAllfile01(f);
}else{
String s = f.toString();
if(s.endsWith(".txt"))
System.out.println(f);
}
}
}
2、Public Interface FilenameFilter
java.io.FilenameFilter: 用来过滤文件名。
接口中的抽象方法: