package cn.dali3.code15;
import java.io.File;
import java.io.FileFilter;
/*过滤器的使用
*
* 需求,过滤出桌面A文件夹下所有以.java结尾下的文件
*
* 在File类中,listFiles有两个重载方法
* 1.public File[] listFiles(FileFilter filter)
* 2.public File[] listFiles(FilenameFilter filter)
*
* 方法1:
* 参数:FileFilter类型
* FileFilter是一个接口,该接口中只有一个accept方法 boolean accept(File pathname);
* 所以我们使用必须创建实现类,手动重写accept方法。
* 以这段程序做说明
* File [] file = f1.listFiles(new FilefilterImpl());
* 首先我们传递接口的实现类到listFiles方法中。
* listFiles方法会把遍历出来的每一个File文件都放到实现类的accept方法中去过滤
* 如果accept返回true,则listFiles方法会把该File文件放到File数组中,返回False则不会放入。
* accept方法中我们可以写入我们过滤的规则。
*
* 方法2:
* 参数FilenameFilter filter
* FilenameFilter也是一个接口 也只有一个方法boolean accept(File dir,String name)
* dir是路径 name是文件夹名称,就是父子路径
* 用法同上
*
* 由于这两个接口都只有一个抽象方法 所以我们可以使用lambda表达式
* */
public class Demo01 {
public static void main(String[] args) {
getAllJava02("C:\\Users\\Administrator\\Desktop\\A");
}
private static void getAllJava(String str) {
File f1 = new File(str);
File[] file = f1.listFiles(new FilefilterImpl());
for (File file1 : file) {
if (file1.isDirectory()) {
getAllJava(file1.getPath());
} else {
System.out.println(file1);
}
}
}
private static void getAllJava02(String str) {
File f1 = new File(str);
File[] file = f1.listFiles(
(File pathname) -> (pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".java"))
);
for (File file1 : file) {
if (file1.isDirectory()) {
getAllJava(file1.getPath());
} else {
System.out.println(file1);
}
}
}
}
过滤器使用方法
最新推荐文章于 2025-06-14 13:00:01 发布