需求,过滤出C盘demo目录下 所有以.java的文件不区分大小写
通过实现FileFilter接口 定义过滤规则,然后将这个实现类对象传给ListFiles方法作为参数即可。
使用递归方法实现
package demo03; /** * 写一个实现FileFilter的类,定义过滤规则 */ import java.io.File; import java.io.FileFilter; public class MyFilter implements FileFilter { @Override public boolean accept(File pathname) { if(pathname.isDirectory()) return true; return pathname.getName().toLowerCase().endsWith(".java"); } }
package demo03; import java.io.File; /* * 遍历目录,获取目录下的所有.java文件 * 遍历多级目录,方法递归实现 * 遍历的过程中,使用过滤器 */ public class FileDemo1 { public static void main(String[] args) { File file=new File("c:\demo"); getAllJava(file); } /** * 定义方法,实现遍历指定目录 * 获取目录中所有的.java文件 */ public static void getAllJava(File dir){ //System.out.println(dir); //调用File对象方法listFiles()获取,加入过滤器 File[] fileArr=dir.listFiles(new MyFilter()); for(File f:fileArr){ if(f.isDirectory()){ //递归进入文件夹遍历 getAllJava(f); }else{ System.out.println(f); } } } }