如何检查Java 7path的扩展
我想检查一个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
类没有“扩展”的概念,可能是因为文件系统本身没有它。 这就是为什么你需要检查它的String
表示,看看它是否以四个 五个string.java
结尾。 请注意,如果要覆盖混合大小写,例如".JAVA"
和".Java"
,则需要与简单endsWith
进行比较。
path.toString().toLowerCase().endsWith(".java");
直接在Path对象本身上没有办法做到这一点。
有两个选项我可以看到:
- 将path转换为文件并调用由File.getName()返回的String上的endsWith
- 在path上调用toString并在该String上调用endsWith。