我希望使用Java NIO和glob在特定的目录中查找文件(不知道完整的文件名)。
public static void match(String glob, String location) throws IOException {
final PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher(
glob);
Files.walkFileTree(Paths.get(location), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path path,
BasicFileAttributes attrs) throws IOException {
if (pathMatcher.matches(path)) {
System.out.println(path);
}
return FileVisitResult.CONTINUE;
}
});
}
在阅读一些教程后,我做了这个。如果我找到(第一个)与给定的全局字符串匹配的文件,我只想返回字符串。
if (pathMatcher.matches(path)) {
return path.toString();
}
String
而不是StringBuilder
。这样可以减少开销,仍然保持准确性。 - Olivier GrégoireString
变量将不再是有效的最终变量。 - LuCioAtomicReference
或使用var wrapper = new Object() { Path reference; }
。 - Olivier Grégoirenull
而不是空的String
吗? - LuCiotry(Stream<Path> stream = Files.find(Paths.get(location), Integer.MAX_VALUE, (path,attr) -> pathMatcher.matches(path))) { return stream.findFirst().orElse(null); }
- Holger