Esta publicación discutirá cómo obtener el nombre de archivo sin extensión en Java. La solución debería devolver el nombre del archivo antes del último punto.

1. Usando String.substring() método

La idea es utilizar el lastIndexOf() método para obtener el índice de la última aparición del punto (.) en el nombre de archivo dado. Luego puede extraer el nombre del archivo sin extensión usando el substring() método, como se muestra a continuación:

Descargar Código

 
El código anterior arroja un java.lang.StringIndexOutOfBoundsException si el nombre del archivo no tiene extensión. Puede manejar este caso comprobando el valor de retorno de la lastIndexOf() método, que devuelve -1 si el punto no aparece. Esto se demuestra a continuación:

Descargar  Ejecutar código

2. Usando Apache Commons IO

Otra opción es utilizar el FilenameUtils clase proporcionada por la biblioteca Apache Commons IO. Proporciona la removeExtension() método para eliminar la extensión de un nombre de archivo. Si el nombre del archivo contiene una ruta, no la elimina.

Descargar Código

 
Alternativamente, también puede utilizar el getBaseName() método de la FilenameUtils class que además elimina la ruta del nombre del archivo (si está presente), junto con la extensión. es similar a la basename Comando Unix.

Descargar Código

3. Usar Guava

Si su proyecto usa la biblioteca Guava sobre Apache Commons, considere usar el getNameWithoutExtension() método de la Files clase. Devuelve el nombre del archivo sin su extensión o ruta, similar al basename Comando Unix.

Descargar Código

4. Usar expresiones regulares

Otra opción es usar la expresión regular \.\w+$ con el replaceAll() método que elimina el último punto y todos los caracteres que lo siguen.

Descargar  Ejecutar código

Se trata de obtener el nombre del archivo sin extensión en Java.