Glob语法不适用于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只匹配文件。

最新更新