Предоставленная корневая папка для начала поиска и максимальная допустимая глубина, это должно вернуть список всех файлов, которые соответствуют имени файла:
List<File> findFileByName(Path start, String fileName, int maxDepth) throws IOException {
final Stream<Path> files = Files.find(start, maxDepth, (path, attribute) -> {
return path.endsWith(fileName);
});
return files
.map(path -> path.toFile())
.collect(Collectors.toList());
}
(path, attribute) -> { //any code }
, что вас смущает, это лямбда-выражение анонимная функция .Это тип BiPredicate<Path,BasicFileAttributes>
, что означает, что он должен возвращать логическое значение на основе некоторой оценки пути и атрибутов для обрабатываемого файла.