我使用以下代碼過濾具有以下擴展名的文件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; } }}但不確定是否已經(jīng)有這方面的課程。有這樣的課嗎?
3 回答

牛魔王的故事
TA貢獻1830條經(jīng)驗 獲得超3個贊
你可以用notFileFilter
:
dir.listFiles( FileFilterUtils.notFileFilter( FileFilterUtils.suffixFileFilter(".docx")))

慕村9548890
TA貢獻1884條經(jīng)驗 獲得超4個贊
沒有FileFilter
處理像您這樣的常見情況的內(nèi)置實現(xiàn)。
為了更短,您可以使用匿名類或更好的 lambda 作為FileFilter
功能接口,例如:
File[] files = dir.listFiles(f -> !f.getName().toLowerCase().endsWith("docx"));

瀟湘沐
TA貢獻1816條經(jīng)驗 獲得超6個贊
由于您已經(jīng)在使用commons-io
,請查看NotFileFilter。
鑒于您的用例,一個示例如下所示:
FileFilter fileFilter = new NotFileFilter(new WildcardFileFilter("*.docx")) File[] files = dir.listFiles(fileFilter);
添加回答
舉報
0/150
提交
取消