package demo5; import java.io.File; import java.lang.reflect.Field; /* * 在File类中有两个和ListFiles重载方法,方法的参数传递的就是过滤器 * File[] listFiles(FileFilter filter) * java.io.FileFileFilter接口:用户抽象路径名(File对象)的过滤器 * 作用:用来过滤文件的方法 * 抽象方法:用来过滤文件的方法 * boolean accept(File pathname)测试指定抽象路径名是否应该包含在某个路径名列表中。 * 参数: * File pathname:使用ListFiles方法遍历目录,得到的每一个文件对象 *File[] listFiles(FilenameFilter filter) *java.io.FilenameFilter接口:实现此接口的类实例可用于过滤器文件名 * 作用:用于过滤文件名称 * 抽象方法:用来过滤文件的方法 * boolean accept(File dir,String name)测试指定文件是否应该包含在某一文件列表中 * 参数: * File dir:构造方法中传递的被遍历的目录 * String name:使用List Files方法遍历目录,获取的每一个文件/文件夹的名称 * 注意: * 两个过滤器接口是没有实现类的,需要我们自己写实现类,重写过滤的方法accept,在方法中自己定义过滤的规则*/
package demo5; import java.io.File; import java.io.FileFilter; public class demo2imp implements FileFilter { @Override public boolean accept(File pathname) { if(pathname.isDirectory()){ return true; } return pathname.getName().startsWith("demo"); } }
public class demo2 { public static void main(String[] args) { File f = new File("/Users/wanggang/Desktop/java/src/demo5"); getAllFile(f); } private static void getAllFile(File dir){ System.out.println("需要遍历的目录:"+dir); File[] f = dir.listFiles(new demo2imp()); for (File fdemo:f){ if (fdemo.isDirectory()){ getAllFile(fdemo); }else { System.out.println(f); } } } }