Search code examples
javapathjava-7

How to check the extension of a Java 7 Path


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("foo/bar.java")
if (path.endsWith(".java")){
    //Do stuff
}

However, this doesn't seem to work because path.endsWith(".java") returns false. It seems the endsWith() method only returns true if there is a complete match for everything after the final directory separator (e.g. bar.java), which isn't practical for me.

So how can I check the file extension of a Path?


Solution

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

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

    .getFileName() is required when your path contains more than one component.

    See the Finding Files tutorial for details.