gpt4 book ai didi

java - 带有 PathMatcher 的 DirectoryStream 不返回任何路径

转载 作者:行者123 更新时间:2023-11-30 02:55:19 25 4
gpt4 key购买 nike

虽然我已经看到了很多类似问题的答案,但我无法使以下代码按我认为应该的方式工作:

File dataDir = new File("C:\\User\\user_id");
PathMatcher pathMatcher = FileSystems.getDefault()
.getPathMatcher("glob:" + "**\\somefile.xml");
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(
dataDir.toPath(), pathMatcher::matches)) {
Iterator<Path> itStream = dirStream.iterator();
while(itStream.hasNext()) {
Path resultPath = itStream.next();
}
} catch (IOException e) {...

我希望获得 C:\User\user_id 下所有“somefile.xml”及其下面所有子目录的路径列表。然而 hasNext() 方法每次都返回 false。

最佳答案

DirectoryStream 仅迭代您提供的目录并匹配该目录中的条目。它查找任何子目录。

您需要使用Files 的 walkXXXX 方法之一来查找所有目录。例如:

try (Stream<Path> stream = Files.walk(dataDir.toPath())) {
stream.filter(pathMatcher::matches)
.forEach(path -> System.out.println(path.toString()));
}

注意:Files.walk(以及 Files 中的其他几个方法)返回的 Stream 必须关闭或资源将被泄漏。建议使用此处所示的 try-with-resources 语句。

关于java - 带有 PathMatcher 的 DirectoryStream 不返回任何路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37383668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com