前言:
java.io.FileFilter(过滤器接口)
boolean accept(File pathname)
File类提供了如下方法使用过滤器:
public File[] listFiles(FileFilter filter)
代码如下:
//过滤器类 class filter1 implements FileFilter{ @Override public boolean accept(File pathname) { // TODO Auto-generated method stub if(pathname.isFile()&&pathname.exists()){ String name = pathname.getName(); if(name.endsWith(".box")){ return true; } } return false; } } // listFiles带参数的方法的大概原理 //public File[] listFiles(FileFilter filter){ //// 获取指定目录下所有文件或文件夹 // File[] all = listFiles(); // File temp; // for(int i = 0;i<all.length;i++){ // if(filter.accept[all[i]]){ // temp[j] = all[i]; // } // } // return temp; //} public class FilterUse { public static void main(String[] args) { // 文件过滤器的用法 File f = new File("D:\dev-machine"); // 获取指定目录下的所有文件或者文件夹 File[] ffs = f.listFiles(new filter1()); // 筛选出后缀名为.box的文件 for (File file : ffs) { System.out.println(file.getName()); } } }
其内部原理结构图大概如下: