使用 getPathMatcher 的全局模式

2024-04-28

从 OCP 考试的“Kathy Sierra Bert Bates”书中我找到了以下代码

public class FileTest {

    public static void matches(Path path, String glob){
        PathMatcher matcher = FileSystems.getDefault().getPathMatcher(glob);
        System.out.println(matcher.matches(path));
    }
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("/com/java/One.java");
        matches(path, "glob:*.java");
        matches(path, "glob:**/*.java");
        matches(path, "glob:*");
        matches(path, "glob:**");

    }
}

Output:

false
true
false
true

我无法清楚地理解输出。有没有人给我解释一下。让我知道我的例子什么是跨越目录边界的。 谢谢 洛基


matches(path, "glob:*.java"); // => flase

因为你的路径包含/它描述了目录层次结构,*.java与任何文件名匹配.java扩大

matches(path, "glob:**/*.java"); // => true

because **匹配任何字符串,包括子路径(例如/com/java/在你的例子中)

matches(path, "glob:*"); // => false

正如第一个中提到的,因为你有路径分隔符/

matches(path, "glob:**"); // => true

正如第二个中提到的,因为**匹配任何字符串,包括/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 getPathMatcher 的全局模式 的相关文章

随机推荐