为了账号安全,请及时绑定邮箱和手机立即绑定

排除文件过滤器

排除文件过滤器

明月笑刀无情 2021-07-16 18:01:23
我使用以下代码过滤具有以下扩展名的文件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;        }    }}但不确定是否已经有这方面的课程。有这样的课吗?
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

你可以用notFileFilter

dir.listFiles(
 FileFilterUtils.notFileFilter(
   FileFilterUtils.suffixFileFilter(".docx")))


查看完整回答
反对 回复 2021-07-29
?
慕村9548890

TA贡献1884条经验 获得超4个赞

没有FileFilter处理像您这样的常见情况的内置实现。
为了更短,您可以使用匿名类或更好的 lambda 作为FileFilter功能接口,例如:

 File[] files = dir.listFiles(f -> !f.getName().toLowerCase().endsWith("docx"));


查看完整回答
反对 回复 2021-07-29
?
潇湘沐

TA贡献1816条经验 获得超6个赞

由于您已经在使用commons-io,请查看NotFileFilter

鉴于您的用例,一个示例如下所示:

FileFilter fileFilter = new NotFileFilter(new WildcardFileFilter("*.docx"))
File[] files = dir.listFiles(fileFilter);


查看完整回答
反对 回复 2021-07-29
  • 3 回答
  • 0 关注
  • 310 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信