我正在编写一个Java程序,该程序需要查找仅具有文件名的文件目录。例如,我知道文件名为“ Img_123.png”,但我不知道它的文件目录,文件名或文件路径。我需要以字符串形式知道整个文件名(以便使用Canvas进行绘制)。
答案 0 :(得分:0)
提供了用于开始搜索的根文件夹以及允许的最大深度,这应该返回与文件名匹配的所有文件的列表:
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 }
是lambda expression和anonymous function。其类型为BiPredicate<Path,BasicFileAttributes>
,这意味着它应该根据对正在处理的文件的路径和属性的一些评估返回一个布尔值。