小编Lei*_*wra的帖子

Java 路径中的星号

我正在阅读 OCA/OCP Java SE 和程序员 I 和 II 学习指南。第520页有一个用于匹配的方法:

public void matches(Path path, String glob){
    PathMatcher matcher = FileSystems.getDefault().getPathMatcher(glob);
    System.out.println(matcher.matches(path));
}
Run Code Online (Sandbox Code Playgroud)

现在,在下一页上有一段使用此方法的代码:

public static void main(String [] args){
    Path path1= Paths.get("0*b/test/1");
    Path path2 = Paths.get("9\\*b/test/1");
    Path path3 = Paths.get("01b/test/1");
    Path path4 = Paths.get("0*b/1");
    String glob = "glob:[0-9]\\*{A*,b}/**/1";
    matches(path1,glob);
    matches(path2,glob);
    matches(path3,glob);
    matches(path4,glob);
}
Run Code Online (Sandbox Code Playgroud)

按照书上的说法结果应该是: true false false false

但是,当我尝试运行它时,出现以下异常:

Exception in thread "main" java.nio.file.InvalidPathException: Illegal char <*> at index 1:       0*b/test/1
    at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
    at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
    at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255) …
Run Code Online (Sandbox Code Playgroud)

java glob path

5
推荐指数
1
解决办法
2891
查看次数

标签 统计

glob ×1

java ×1

path ×1