JAVA FileFilter文件过滤器

概述

java.io.FileFilter是一个接口,是File的过滤器。 该接口的对象可以传递给File类的listFiles(FileFilter) 作为参数

方法:

boolean accept(File pathname)
参数pathname表示当前文件对象,如果保留该文件,就返回true,不保留就返回false

实现

  1. 接口作为参数,需要传递子类对象,重写其中方法。我们选择匿名内部类方式,比较简单。
  2. 通过过滤器的作用,listFiles(FileFilter)返回的数组元素中,子文件对象都是符合条件的,可以直接打印。

例子:
查找 .java 文件,在过滤器中实现下面规则:

  1. 如果后缀是 .java ,就保留
  2. 如果是目录,就继续遍历。
public class DiGuiDemo4 {
    public static void main(String[] args) {
        File dir = new File("D:\\aaa");
        printDir2(dir);
    }

    public static void printDir2(File dir) {
          // 匿名内部类方式,创建过滤器子类对象
        File[] files = dir.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".java")||pathname.isDirectory();
            }
        });
          // 循环打印
        for (File file : files) {
            if (file.isFile()) {
                System.out.println("文件名:" + file.getAbsolutePath());
            } else {
                printDir2(file);
            }
        }
    }
}

原文出处:/show_1EF4sfAMgP30.html