gpt4 book ai didi

java - 我如何在 JDK7 中使用目录 globbing

转载 作者:太空狗 更新时间:2023-10-29 22:34:14 27 4
gpt4 key购买 nike

我一直在尝试使用 JDK7 中的新 globbing 功能,从 the documentation and examples 开始

我可以获得诸如 "glob:*.dat" 之类的 glob 来与

Files.walkFileTree(startingDir, finder);

示例,但我无法使 "**" 语法正常工作。我希望能够创建类似的东西:

matcher = FileSystems.getDefault().getPathMatcher("glob:" + "foo/**/bar/*.dat");

如果能提供一个简单的例子,我们将不胜感激。我正在使用 Windows 7。

更新:@Oleg 和@JBNizet 明确表示“/”语法与操作系统无关。请注意 Javadocs建议也可以使用依赖于操作系统的语法(?需要)

仍然存在的问题:已采取@Nizet 并编辑如下:

@Test
public void testStackoverflowGlobber() throws IOException {
final PathMatcher matcher =
FileSystems.getDefault().getPathMatcher("glob:*.cml");
Files.walkFileTree(Paths.get("d:/petermr-workspace/jumbo-converters/jumbo-converters-cli/src/test/resources"), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("try>> "+file);
if (matcher.matches(file)) {
System.out.println("MATCHES>>"+file);
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
});
}

这会给出如下输出:

try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cdx
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cdxml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.ref.cdxml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.ref.cml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cif\aa2004.cml

但没有匹配的证据

最佳答案

这是一个工作示例,它显示 d:/ 的任何后代目录中的所有 zip 文件:

public static void main(String[] args) throws IOException {
final PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:d:/**/*.zip");
Files.walkFileTree(Paths.get("d:/"), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (matcher.matches(file)) {
System.out.println(file);
}
return FileVisitResult.CONTINUE;
}

@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
});
}

如您所见,在 Windows 上可以使用正斜杠。

关于java - 我如何在 JDK7 中使用目录 globbing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9148528/

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