java文件过滤器的使用

前言:

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());
		}
	}
}

 其内部原理结构图大概如下:

原文地址:https://www.cnblogs.com/nianzhilian/p/8988551.html