在File类中有两个和listFiles重载的方法,方法传递的参数就是过滤器,方法如下:
File[] listFiles(FileFilter filter)
java.io.FileFilter接口是用于抽象路径名File的过滤器,其主要作用是过滤file文件,接口中只有唯一的抽象方法accept,如下:
boolean accept(File pathname); //判断指定抽象路径名是否应该包含在某个路径名列表中 //参数File pathname指的是listFiles方法遍历目录,得到的全部文件
private static void getAllFiles1(File file) { if(file.isDirectory()){ File[] files = file.listFiles(new FileFilter() { @Override public boolean accept(File pathname) {//将.java结尾的文件存储到files中 return pathname.isDirectory || pathname.getName().endsWith(".java"); } }); for (File file1 : files) { System.out.println(file1); } } }
File[] listFiles(FilenameFilter filter)
private static void getAllFiles1(File file) { if(file.isDirectory()){ File[] files = file.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return new File(dir,name).isDirectory() || name.endsWith(".java"); } }); for (File file1 : files) { System.out.println(file1); } } }