【发布时间】:2018-02-11 18:49:53
【问题描述】:
在 *nix 系统中,如果您在目录上使用带有 glob 的命令,shell(或命令?)不会检查文件系统中的所有文件。
例如:
ls /System/Library/J*/**
/System/Library/Java/Extensions:
MRJToolkit.jar
/System/Library/Java/Support:
CoreDeploy.bundle
我的 Mac 没有检查整个文件系统,只检查 /System/Library 中的文件。
在 Java 7+ NIO 中,要使用通配符,我必须创建一个 PathMatcher 并在其上测试一些 Paths。我正在构建一个命令行应用程序,用户应该能够插入一个通配模式来选择一些文件。
为了匹配目录 / 上的所有文件(递归),我不想在 / 上使用 DirectoryStream,因为它太慢了。显然,我可以解析模式并将其分成两部分,一个没有 glob,一个有 glob,并将第一部分中的所有文件匹配到第二部分。我想知道是否有一种简单的方法可以做到这一点。
另一个问题是,如果用户直接插入路径,应用程序不应该进行任何路径匹配。我正在寻找一种接受String 并给我List<Path> 的方法。
【问题讨论】: