package com.da.tool.util;
import org.apache.commons.io.filefilter.RegexFileFilter;
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;/**
* java 的 FileFilter和FilenameFilter测试使用*/
public classFileFilterExample {/**
* 通过文件后缀过滤文件(仅查询后缀)
* 功能可扩展点
* 1、可针对文件、目录进行按照类型进行查找,实现特有的逻辑
* 2、可根据此功能抽象一个借口,采用不同实现,进行不同场景的文件过滤
* 3、对于复杂场景的文件过滤
* 4、nameSuffix可定义为多个*/
static classFileFilterByNameSuffix implements FileFilter{privateString nameSuffix;publicFileFilterByNameSuffix(String nameSuffix) {this.nameSuffix =nameSuffix;
}
@Overridepublicboolean accept(File file) {
Boolean accept= false;if(file.getName().endsWith(nameSuffix)){
accept= true;
}returnaccept;
}
}/**
* 通过文件后缀过滤文件*/
static classFileNameFilterByNameSuffix implements FilenameFilter{privateString nameSuffix;publicFileNameFilterByNameSuffix(String nameSuffix) {this.nameSuffix =nameSuffix;
}
@Overridepublicboolean accept(File dir, String name) {returnname.endsWith(nameSuffix);
}
}public static voidmain(String[] args) {
String path="D:\\project\\da-tool\\src\\main\\java\\com\\da\\tool\\util";
File file= newFile(path);//1、实现FileFilter
File [] files =file.listFiles(new FileFilterByNameSuffix(".java"));for(File file1 : files) {
System.out.println(file1.getPath());
}//2、实现FilenameFilter
files =file.listFiles(new FileNameFilterByNameSuffix(".java"));for(File file1 : files) {
System.out.println(file1.getPath());
}//3、java提供正则过滤
files =file.listFiles((FileFilter) new RegexFileFilter(".*.java"));for(File file1 : files) {
System.out.println(file1.getPath());
}//其他:PatternFilenameFilter JarFilter
}
}