首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectoryStream,PathMatcher不返回任何路径

DirectoryStream,PathMatcher不返回任何路径
EN

Stack Overflow用户
提问于 2016-05-23 06:10:25
回答 1查看 379关注 0票数 1

虽然我已经看到了很多类似问题的答案,但我不能让下面的代码像我认为的那样工作:

代码语言:javascript
复制
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下所有“C:\User\user_id”以及下面所有子目录的路径列表。然而,hasNext()方法每次都返回false。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-23 07:24:06

DirectoryStream只遍历给它的目录,并匹配该目录中的条目。它做的是而不是在任何子目录中查找。

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

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

注意:StreamFiles.walk返回(以及Files中的其他几种方法),必须关闭,否则资源将泄漏。建议使用如下图所示的try-with语句。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37383668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档