File相关工具类简介及应用

版权声明:本文为博主原创文章,转载请注明作者和出处,如有错误,望不吝赐教。 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);

猜你喜欢

转载自blog.csdn.net/weixin_41888813/article/details/84857527