How to check the extension of a Java 7 Path

前端 未结 4 1163
温柔的废话
温柔的废话 2020-12-08 03:23

I\'d like to check if a Path (introduced in Java 7) ends with a certain extension. I tried the endsWith() method like so:

Path path = Paths.get         


        
相关标签:
4条回答
  • 2020-12-08 04:03

    Java NIO's PathMatcher provides FileSystem.getPathMatcher(String syntaxAndPattern):

    PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*.java");
    
    Path filename = ...;
    if (matcher.matches(filename)) {
        System.out.println(filename);
    }
    

    See the Finding Files tutorial for details.

    0 讨论(0)
  • 2020-12-08 04:05

    The Path class does not have a notion of "extension", probably because the file system itself does not have it. Which is why you need to check its String representation and see if it ends with the four five character string .java. Note that you need a different comparison than simple endsWith if you want to cover mixed case, such as ".JAVA" and ".Java":

    path.toString().toLowerCase().endsWith(".java");
    
    0 讨论(0)
  • 2020-12-08 04:05

    Simple solution:

    if( path.toString().endsWith(".java") ) //Do something
    

    You have to be carefull, when using the Path.endsWith method. As you stated, the method will return true only if it matches with a subelement of your Path object. For example:

    Path p = Paths.get("C:/Users/Public/Mycode/HelloWorld.java");
    System.out.println(p.endsWith(".java")); // false
    System.out.println(p.endsWith("HelloWorld.java")); // true
    
    0 讨论(0)
  • 2020-12-08 04:15

    There is no way to do this directly on the Path object itself.

    There are two options I can see:

    1. Convert the Path to a File and call endsWith on the String returned by File.getName()
    2. Call toString on the Path and call endsWith on that String.
    0 讨论(0)
提交回复
热议问题