Glob 语法不适用于 Windows PathMatcher

Glob Syntax not working for Windows PathMatcher

出于某种原因,我似乎无法获得 glob 语法路径匹配器来匹配任何文件。

我已将我的代码简化为以下方法:

public static void match() throws IOException {

        String startingLocation = "C:\";

        PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher("glob:*");

        Files.walkFileTree(Paths.get(startingLocation), new SimpleFileVisitor<Path>() {

            @Override
            public FileVisitResult visitFile(Path path,
                    BasicFileAttributes attrs) throws IOException {
                if (pathMatcher.matches(path)) {
                    System.out.println(path);
                }
                return FileVisitResult.CONTINUE;
            }

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

我的理解是该方法应该列出我C盘上的所有文件。但是,它不会打印出单个文件。

有趣的是,如果我 运行 使用 "regex:." 而不是 "glob:" 同样的事情,它似乎确实列出了我 C 驱动器上的所有文件。

我可以努力将我的 glob 表达式转换为正则表达式,但我真的不想这样做。

有人知道哪里出了问题吗?

请注意,我 运行 在 Windows 7 机器上 Java 8

请务必仔细阅读 javadoc

如果要打印出C:驱动器的所有文件, 将模式更改为 glob:**glob:C:\\**(如 javadoc 中所写)。

另请注意,Files.walkFileTree 仅匹配文件。