我想检查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,这对我来说不实用。
那么如何检查路径的文件扩展名?
答案 0 :(得分:66)
Java NIO' PathMatcher提供FileSystem.getPathMatcher(String syntaxAndPattern):
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*.java");
Path filename = ...;
if (matcher.matches(filename)) {
System.out.println(filename);
}
有关详细信息,请参阅Finding Files教程。
答案 1 :(得分:57)
Path
类没有“扩展”的概念,可能是因为文件系统本身没有它。这就是为什么您需要检查其String
表示并查看它是否以四 五字符串.java
结尾的原因。请注意,如果要覆盖混合大小写,例如endsWith
和".JAVA"
,则需要使用与简单".Java"
不同的比较:
path.toString().toLowerCase().endsWith(".java");
答案 2 :(得分:9)
简单的解决方案:
baseClass
使用Path.endsWith方法时必须小心。如您所述,只有当它与Path对象的子元素匹配时,该方法才会返回 true 。 例如:
if( path.toString().endsWith(".java") ) //Do something
答案 3 :(得分:2)
无法直接在Path对象本身上执行此操作。
我可以看到两个选项: