FileFilter过滤器的原理和使用
FileFilter是一个接口 是File的过滤器 该接口可以传递给File类的listFiles(FileFilter)作为参数 
FileFilter隶属于java.io包下
接口中只有一个方法:
boolean accept(File pathname):测试pathname是否应该包含在当前File目录中 符合则返回true
图解

代码:
过滤器类:
public class FileFilterImp implements FileFilter {
    @Override
    public boolean accept(File pathname) {
        /*
        过滤规则:
        在accept方法中 判断File对象是否是以.mp3结尾
        是就返回true
        不是就返回false
         */
        //如果pathname是一共文件夹 返回true 继续遍历这个文件夹
        if (pathname.isDirectory()){
            return true;
        }
        return pathname.getName().endsWith(".mp3");
    }
}
测试类
public class Demo03Catalogue {
    public static void main(String[] args) {
        File file = new File("E:\\file");
        method(file);
    }
    private static void method(File file) {
        File[] files = file.listFiles(new FileFilterImp());
        for (File file1 : files) {
            //对遍历得到的File对象进行判断 判断是否是文件夹
            if (file1.isDirectory()) {
                //递归(自己调自己)
                method(file1);
            } else {
                    System.out.println(file1);
                }
            }
        }
    }
运行结果:

匿名内部类的使用
代码:
public static void main(String[] args) {
    File file = new File("E:\\file");
    method(file);
}
private static void method(File file) {
    File[] files = file.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
           /*
              过滤规则:
              在accept方法中 判断File对象是否是以.mp3结尾
              是就返回true
              不是就返回false
           */
            //如果pathname是一共文件夹 返回true 继续遍历这个文件夹
            if (pathname.isDirectory()) {
                return true;
            }
            return pathname.getName().endsWith(".mp3");
        }
    });
    for (File file1 : files) {
        //对遍历得到的File对象进行判断 判断是否是文件夹
        if (file1.isDirectory()) {
            //递归(自己调自己)
            method(file1);
        } else {
            System.out.println(file1);
        }
    }
}
运行结果:

 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号