В Java 8 вы можете сделать это
Files.walk(Paths.get("/path/to/folder"))
.filter(Files::isRegularFile)
.forEach(System.out::println);
, который будет печатать все файлы в папке, исключая все каталоги. Если вам нужен список, подойдет следующее:
Files.walk(Paths.get("/path/to/folder"))
.filter(Files::isRegularFile)
.collect(Collectors.toList())
Если вы хотите вернуть List<File>
вместо List<Path>
, просто сопоставьте это:
List<File> filesInFolder = Files.walk(Paths.get("/path/to/folder"))
.filter(Files::isRegularFile)
.map(Path::toFile)
.collect(Collectors.toList());
Вы также должны обязательно закрыть поток! В противном случае вы можете столкнуться с исключением, сообщающим, что открыто слишком много файлов. Прочитайте здесь для получения дополнительной информации.