排除文件过滤器

我使用以下代码过滤具有以下扩展名的文件


FileFilter fileFilter= new WildcardFileFilter("*.docx");

File[] sampleFiles= filesDirectory.listFiles(fileFilter);

但是,如果我想要相反的情况,我想排除具有此扩展名的文件。目前我有以下代码


public class FileFilter {

    public static void main(String[] args) {

        File dir = new File("C:\\temp\\filter-exclude");


        File[] files = dir.listFiles(new ExcludeFilter());

        for (File f : files) {

            System.out.println("file: " + f.getName());

        }

    }


    public static class ExcludeFilter implements java.io.FileFilter {


        @Override

        public boolean accept(File file) {

            if (file.getName().toLowerCase().endsWith("docx")) {

                return false;

            }

            return true;

        }


    }

}

但不确定是否已经有这方面的课程。有这样的课吗?


明月笑刀无情
浏览 312回答 3
3回答

牛魔王的故事

你可以用notFileFilter:dir.listFiles(  FileFilterUtils.notFileFilter(    FileFilterUtils.suffixFileFilter(".docx")))

慕村9548890

没有FileFilter处理像您这样的常见情况的内置实现。为了更短,您可以使用匿名类或更好的 lambda 作为FileFilter功能接口,例如: File[] files = dir.listFiles(f -> !f.getName().toLowerCase().endsWith("docx"));

潇湘沐

由于您已经在使用commons-io,请查看NotFileFilter。鉴于您的用例,一个示例如下所示:FileFilter fileFilter = new NotFileFilter(new WildcardFileFilter("*.docx")) File[] files = dir.listFiles(fileFilter);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java