实现类
package Recursion;
import java.io.File;
import java.io.FileFilter;
public class FileFilterImpl implements FileFilter {
/**
* 过滤的规则:
* 在 accept 方法中,判断 File 类对象是否是以.java 结尾
* 是 就返回 true
* 如果 此 file 是一个文件夹 返回 true
* @param pathname 文件名
* @return 布尔
*/
@Override
public boolean accept(File pathname) {
// 方法一
// true 所有的情况都满足
// false 都不满足
//
// return true;
// 方法二
// 在目录下就遍历完了
/*if (pathname.getPath().toLowerCase().endsWith(".java")) {
return true;
} else {
return false;
}*/
// 修正后,方法二
if(pathname.isDirectory()){
return true;
}
return pathname.getPath().toLowerCase().endsWith(".java");
}
}
主启动类
package Recursion;
import java.io.File;
public class FileFilter6 {
public static void main(String[] args) {
//
File file = new File("D:\\Code\\xx\\练习题");
isJava(file);
}
// 定义一个方法遍历,所有以 .java 结尾的文件
public static void isJava(File dir) {
// 参数 目录
// File[] files = dir.listFiles();
// 增加了过滤器
FileFilterImpl filter = new FileFilterImpl();
File[] files = dir.listFiles(filter);
if (files != null) {
System.out.println("满足条件的文件个数 : "+files.length);
}
assert files != null;
for (File f : files) {
// 判断 f 是否目录
if (f.isDirectory()) {
isJava(f);
} else {
System.out.println(f);
}
}
}
}