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 class FileFilterExample {
/**
* 通过文件后缀过滤文件(仅查询后缀)
* 功能可扩展点
* 1、可针对文件、目录进行按照类型进行查找,实现特有的逻辑
* 2、可根据此功能抽象一个借口,采用不同实现,进行不同场景的文件过滤
* 3、对于复杂场景的文件过滤
* 4、nameSuffix可定义为多个
*/
static class FileFilterByNameSuffix implements FileFilter{
private String nameSuffix;
public FileFilterByNameSuffix(String nameSuffix) {
this.nameSuffix = nameSuffix;
}
@Override
public boolean accept(File file) {
Boolean accept = false;
if(file.getName().endsWith(nameSuffix)){
accept = true;
}
return accept;
}
}
/**
* 通过文件后缀过滤文件
*/
static class FileNameFilterByNameSuffix implements FilenameFilter{
private String nameSuffix;
public FileNameFilterByNameSuffix(String nameSuffix) {
this.nameSuffix = nameSuffix;
}
@Override
public boolean accept(File dir, String name) {
return name.endsWith(nameSuffix);
}
}
public static void main(String[] args) {
String path ="D:\\project\\da-tool\\src\\main\\java\\com\\da\\tool\\util";
File file = new File(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
}
}