版权声明:本文为博主原创文章,转载请注明作者和出处,如有错误,望不吝赐教。 https://blog.csdn.net/weixin_41888813/article/details/84857527
查找出目录下的文件,并设置过滤规则
public class FileTest{
public void test() throws ParseException {
// 查出路径下的目录
File directory = new File("D:\\test\\file");
// 目录下的文件集合
File[] fs = directory.listFiles();
// 定义过滤规则规则(创建过滤器)
Date date = DateUtils.parseDate("2018-12-05 13:25:16", new String[]{"yyyy-MM-dd HH:mm:ss"});
// FileFilterUtils.and(IOFileFilter... filters),可传递多个过滤条件
IOFileFilter filefilter = FileFilterUtils.and(FileFilterUtils.fileFileFilter(),
FileFilterUtils.suffixFileFilter(".txt"), FileFilterUtils.ageFileFilter(date, false));
// 过滤后的文件集合
File[] files = FileFilterUtils.filter(filefilter, fs);
if (files.length > 0) {
// doSomting...
}
}
}
【一】File filter的作用
有时候,当我们在操作File对象时,只想针对某些特定的类型或者具备特定属性的文件。例如:只显示java文件,只显示目录,只显示文件....。在JDK中已经提供了这样的工具,我们称为File filter和Filename filter。
Apache commons IO对这个接口进行了扩展。
在此之下,衍生出了许多各种各样的过滤器。它们可以分为两大类:
①实质性过滤器:例如针对文件的类型,属性,名称,大小进行过滤的过滤器
②过滤器连接器:典型的包括AndFileFilter、OrFileFilter。用于逻辑连接多个过滤器
Apache commons IO为这么多名目繁多的过滤器提供了一个工具类:FileFilterUtils
【二】FileFilterUtils简介
FileFilterUtils提供了一系列的静态方法,用于返回各种类型的过滤器,并组织它们。例如我需要过滤所有以"txt"结尾的文件,不包括目录,那么使用FileFilterUtils,我可以这样写:
IOFileFilter fileOnlyFilter = FileFilterUtils.fileFileFilter();
IOFileFilter subfixFilter = FileFilterUtils.subfixFilter("txt");
IOFileFilter txtFileFilter = FileFilterUtils.andFileFilter(fileOnlyFilter, subfixFilter);