Вот мой реальный код, который отлично работает:
String sHomeDir - моя единственная папка, с которой начинается сканирование
String sExt - единственное расширение для поиска
try (Stream<Path> walk = Files.walk(Paths.get(sHomeDir)))
{
List<String> result = walk.map(x -> x.toString())
.filter(f -> f.endsWith(sExt)).collect(Collectors.toList());
...
} catch (IOException e) {
e.printStackTrace();
}
Это можно переписать, чтобы использовать:
- несколько папок для сканирования (с поддеревом)
- несколько расширений файлов для поиска