如何检查Java 7路径的扩展名

时间:2013-12-11 22:27:45

标签: java path java-7

我想检查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,这对我来说不实用。

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

4 个答案:

答案 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对象本身上执行此操作。

我可以看到两个选项:

  1. 将Path转换为File并在File.getName()
  2. 返回的String上调用endsWith
  3. 在Path上调用toString并在该String上调用endsWith。