FileUtils.listFiles 从列表中排除特定的文件扩展名

FileUtils.listFiles to exclude specific file extensions from listing

我使用此代码以递归方式从给定目录中获取所有文件。

List<File> fileList = (List<File>) FileUtils.listFiles(new File(directoryName), null , true);

我想从列表中排除一些文件,所以方法的第二个参数值不适合这个目的。 我也尝试使用 notFileFilter,但我不能递归使用它。

FileFilter fileFilter1 =   FileFilterUtils.notFileFilter(FileFilterUtils.nameFileFilter(".info", null));
List<File> fileList = (List<File>) FileUtils.listFiles(new File(directoryName), fileFilter1, true);

对于 Java 8 及更高版本,您可以使用轻松流 api

List<File> filteredList = fileList.stream().filter(f -> f.getName().endsWith(".some_extension")).collect(Collectors.toList());

使用listFiles方法的其他重载

FileFilter notInfoFilter = FileFilterUtils.notFileFilter(
        FileFilterUtils.suffixFileFilter(".info", IOCase.SYSTEM));

Collection<File> files = FileUtils.listFiles(
        new File(directoryName), notInfoFilter, TrueFileFilter.INSTANCE);