定义一个方法,参数传递File型的目录
java中可采用过滤器查找文件,可手写也可采用重写FileFilter和FilenamFilter方法(两种方法参数不一样,重载了listFiles),也可采用匿名内部类的方式,还可用Lamda表达式简化。
``代码调用
File files=new File("F:\\IdeaProjects\\demo05");
getAllFile(files);
``
五种方式过滤
public static void getAllFile(File dir){
//1.手动过滤
File[] files=dir.listFiles();
for (File s:files) {
if (s.isDirectory()) {
getAllFile(s);
}
String name = s.getName();
boolean b = name.endsWith("java");
if (b) {
System.out.println(s);
}
}
//2.采用匿名内部类的方法FileFileter
File[] file2=dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory()||pathname.getName().toLowerCase().endsWith(".java");
}
});
//3.采用匿名内部类FilenameFilter
File []files1=dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir,name).isDirectory()||name.toLowerCase().endsWith(".java");
}
});
//4,Lamda表达式来优化匿名内部类FilenameFilter
File[] file3=dir.listFiles((File dir1,String name)->{
return new File(dir1,name).isDirectory()||name.toLowerCase().endsWith(".java");
});
//5,Lamda表达式优化FileFilter
File[] file4=dir.listFiles((File pathname)->{
return pathname.isDirectory()||pathname.getName().toLowerCase().endsWith(".java");
});
}