如何检查 Java 7 路径的扩展

2022-08-31 10:56:10

我想检查Path(在Java 7中引入)是否以某个扩展名结尾。我尝试了这样的方法:endsWith()

Path path = Paths.get("foo/bar.java")
if (path.endsWith(".java")){
    //Do stuff
}

但是,这似乎不起作用,因为返回 false。似乎只有当最终目录分隔符(例如)之后的所有内容完全匹配时,该方法才会返回true,这对我来说是不切实际的。path.endsWith(".java")endsWith()bar.java

那么我该如何检查路径的文件扩展名呢?


答案 1

Java NIO的PathMatcher提供了FileSystem.getPathMatcher(String syntaxAndPattern)

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

Path filename = ...;
if (matcher.matches(filename)) {
    System.out.println(filename);
}

有关详细信息,请参阅查找文件教程。


答案 2

该类没有“扩展”的概念,可能是因为文件系统本身没有它。这就是为什么您需要检查其表示形式并查看它是否以 个五个字符的字符串 .请注意,如果要涵盖混合大小写,则需要与简单比较不同的比较,例如 和 :PathString.javaendsWith".JAVA"".Java"

path.toString().toLowerCase().endsWith(".java");

推荐