FileUtils.listFiles для исключения определенных c расширений файлов из списка - PullRequest
0 голосов
/ 22 апреля 2020

Я использую этот код для рекурсивного получения всех файлов из данного каталога.

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);

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Используйте другую перегрузку метода listFiles:

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

Collection<File> files = FileUtils.listFiles(
        new File(directoryName), notInfoFilter, TrueFileFilter.INSTANCE);
1 голос
/ 22 апреля 2020

Для Java 8 и выше, вы можете сделать это с легким потоком API

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