【发布时间】:2017-04-18 17:05:46
【问题描述】:
我有一个 glob,它可能看起来像 *.txt,在这种情况下,我想在当前目录中搜索文本文件。或者它可能看起来像 **/*.txt,在这种情况下,我想遍历文件树来查找文件。
当传入 *.txt 时,DirectoryStream 会做我想做的事,而当我有 **/*.txt 时,Files.walk 会工作。 java 8 中是否有一种基于我的 glob(或者更确切地说是我的 PathMatcher)的方法?
【问题讨论】:
-
Files.walk有什么问题? javapapers.com/java/glob-with-java-nio -
所以我正在接受一个根目录和一个全局模式。如果我得到 *.txt,它应该只搜索那个目录。用户通过模式表明他们是否想要子目录,即**/*.txt
-
我想我找到了答案。 walk(Path start, int maxDepth, FileVisitOption... options) 我想我可以有一个 if 语句并在必要时将 maxDepth 设置为 0
-
也许像github.com/EsotericSoftware/wildcard 这样的外部库可以提供帮助
-
**是否可以出现在模式的中间,例如/home/steve/**/*.txt?