内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我想检查Path(在Java 7中引入)是否以特定扩展名结尾。我尝试了endsWith()
这样的方法:
Path path = Paths.get("foo/bar.java")
if (path.endsWith(".java")){
//Do stuff
}
但是,这似乎不工作,因为path.endsWith(".java")
返回false。看来endsWith()
只有在最终目录分隔符(例如bar.java
)之后的所有内容都完全匹配时,该方法才会返回true ,这对我来说不实用。
那么如何检查Path的文件扩展名?
Java NIO的PathMatcher提供了FileSystem.getPathMatcher(String syntaxAndPattern):
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*.java");
Path filename = ...;
if (matcher.matches(filename)) {
System.out.println(filename);
}
有关详细信息,请参阅查找文件教程。
该Path
班没有“extension”的概念,可能是因为文件系统本身不拥有它。这就是为什么你需要检查它的String
表示,并看看它是否以四个 五字符字符串结尾.java
。请注意,endsWith
如果您想要覆盖混合大小写,例如".JAVA"
和,则需要使用不同于简单的比较".Java"
:
path.toString().toLowerCase().endsWith(".java");