我正在阅读 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)