我使用以下代码过滤具有以下扩展名的文件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")))
慕村9548890
TA贡献1884条经验 获得超4个赞
没有FileFilter
处理像您这样的常见情况的内置实现。
为了更短,您可以使用匿名类或更好的 lambda 作为FileFilter
功能接口,例如:
File[] files = dir.listFiles(f -> !f.getName().toLowerCase().endsWith("docx"));
潇湘沐
TA贡献1816条经验 获得超6个赞
由于您已经在使用commons-io
,请查看NotFileFilter。
鉴于您的用例,一个示例如下所示:
FileFilter fileFilter = new NotFileFilter(new WildcardFileFilter("*.docx")) File[] files = dir.listFiles(fileFilter);
添加回答
举报
0/150
提交
取消