paths files example define clase java path java-7

files - Cómo comprobar la extensión de una ruta de Java 7



path java 8 (4)

Me gustaría comprobar si una Path (introducida en Java 7) termina con una extensión determinada. endsWith() método endsWith() como tal:

Path path = Paths.get("foo/bar.java") if (path.endsWith(".java")){ //Do stuff }

Sin embargo, esto no parece funcionar porque path.endsWith(".java") devuelve false. Parece que el método endsWith() solo devuelve true si hay una coincidencia completa para todo después del separador de directorio final (por ejemplo, bar.java ), lo cual no es práctico para mí.

Entonces, ¿cómo puedo comprobar la extensión de archivo de una ruta?


La clase Path no tiene una noción de "extensión", probablemente porque el sistema de archivos en sí no la tiene. Es por eso que necesita verificar su representación de String y ver si termina con la cadena de cuatro caracteres .java . Tenga en cuenta que necesita una comparación diferente a los endsWith simples endsWith si desea cubrir un caso mixto, como ".JAVA" y ".Java" :

path.toString().toLowerCase().endsWith(".java");


No hay forma de hacer esto directamente en el objeto Path.

Hay dos opciones que puedo ver:

  1. Convierta la ruta a un archivo y llame a endsWith en la cadena devuelta por File.getName ()
  2. Llame a toString en la ruta y la llamada termina con esa cadena.

Solución simple:

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

Tienes que tener cuidado al usar el método Path.endsWith. Como dijo, el método devolverá verdadero solo si coincide con un subelemento de su objeto Path. Por ejemplo:

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