Cómo obtener la extensión de un archivo en Java

Mohammad Irfan 12 octubre 2023
  1. Obtener la extensión del archivo usando el método getExtension() en Java
  2. Obtener la extensión de un archivo con el método lastIndexOf() en Java
  3. Obtener la extensión de un archivo con el análisis de cadenas en Java
  4. Obtener la extensión de un archivo usando el método replaceAll() en Java
  5. Obtener la extensión de un archivo usando el método contains() y lastIndexOf() en Java
  6. Obtener la extensión de un archivo usando los operadores externos en Java
  7. Obtener la extensión de un archivo usando el método stream() en Java
  8. Obtener la extensión de un archivo usando Regex en Java
Cómo obtener la extensión de un archivo en Java

Este tutorial introduce cómo obtener la extensión de un archivo en Java y también enumera algunos códigos de ejemplo para entender el tema.

Obtener la extensión del archivo usando el método getExtension() en Java

Para obtener la extensión de un archivo, podemos usar el método getExtension() de la clase FileenameUtils. Este método devuelve la extensión del archivo. Como este método pertenece a la biblioteca común de Apache, debes descargar la biblioteca del sitio oficial de Apache para usar JARs en tu proyecto.

import org.apache.commons.io.FilenameUtils;

public class SimpleTesting {
  public static void main(String[] args) {
    String fileName = "student-records.pdf";
    String fe = FilenameUtils.getExtension(fileName);
    System.out.println("File extension is : " + fe);
  }
}

Resultado:

File extension is : pdf

Obtener la extensión de un archivo con el método lastIndexOf() en Java

Si no quieres usar ningún método incorporado, entonces usa el ejemplo de código dado que usa el método lastIndexOf() para obtener la extensión del archivo. Es la forma más simple y sencilla que involucra sólo métodos de cadenas. Vea el ejemplo a continuación.

public class SimpleTesting {
  public static void main(String[] args) {
    String fileName = "student-records.pdf";
    String fe = "";
    int i = fileName.lastIndexOf('.');
    if (i > 0) {
      fe = fileName.substring(i + 1);
    }
    System.out.println("File extension is : " + fe);
  }
}

Resultado:

File extension is : pdf

Obtener la extensión de un archivo con el análisis de cadenas en Java

Esta es otra solución que incluye varios escenarios, incluyendo el que (si punto (.) está en la ruta de los archivos). Este método devuelve el resultado exacto incluso si la ruta del archivo tiene un punto(.) entre la ruta del archivo. Vea el ejemplo a continuación.

public class SimpleTesting {
  public static void main(String[] args) {
    String fileName = "folder\s.gr\fg\student-records.pdf";
    String fe = "";
    char ch;
    int len;
    if (fileName == null || (len = fileName.length()) == 0 || (ch = fileName.charAt(len - 1)) == '/'
        || ch == '\\' || ch == '.') {
      fe = "";
    }
    int dotInd = fileName.lastIndexOf('.'),
        sepInd = Math.max(fileName.lastIndexOf('/'), fileName.lastIndexOf('\\'));
    if (dotInd <= sepInd) {
      fe = "";
    } else {
      fe = fileName.substring(dotInd + 1).toLowerCase();
    }
    System.out.println("File extension is : " + fe);
  }
}

Resultado:

File extension is : pdf

Obtener la extensión de un archivo usando el método replaceAll() en Java

Podemos usar el método replaceAll() para obtener la extensión del archivo como hicimos en el siguiente ejemplo. Utilizamos la expresión regular en este método y recogemos el resultado en una variable.

public class SimpleTesting {
  public static void main(String[] args) {
    String fileName = "folder\s.gr\fg\student-records.pdf";
    String fe = "";
    fe = fileName.replaceAll("^.*\\.(.*)$", "$1");
    System.out.println("File extension is : " + fe);
  }
}

Resultado:

File extension is : pdf

Obtener la extensión de un archivo usando el método contains() y lastIndexOf() en Java

El método contains() se utiliza para comprobar si el carácter especificado está presente en la cadena o no y el método lastIndexOf() devuelve un valor índice del carácter especificado que se pasa al método substring() para obtener la extensión del archivo. Utilizamos estos métodos en este código para obtener la extensión del archivo. Vea el ejemplo a continuación.

public class SimpleTesting {
  public static void main(String[] args) {
    String fileName = "folder\s.gr\fg\student-records.pdf";
    String fe = "";
    if (fileName.contains("."))
      fe = fileName.substring(fileName.lastIndexOf(".") + 1);
    System.out.println("File extension is : " + fe);
  }
}

Resultado:

File extension is : pdf

Obtener la extensión de un archivo usando los operadores externos en Java

Si te sientes cómodo con los operadores ternarios(?, :) entonces úsalo con el método substring() y lastIndexOf(). Reduce la línea de código y devuelve el resultado en una sola sentencia.

public class SimpleTesting {
  public static void main(String[] args) {
    String fileName = "folder\s.gr\fg\student-records.pdf";
    String fe = "";
    if (fileName.contains(".")) {
      int i = fileName.lastIndexOf('.');
      fe = i > 0 ? fileName.substring(i + 1) : "";
    }
    System.out.println("File extension is : " + fe);
  }
}

Resultado:

File extension is : pdf

Obtener la extensión de un archivo usando el método stream() en Java

Podemos usar el método stream() de la clase Arrays para convertir el nombre del archivo en stream() y usar el método split() para separar el nombre del archivo del punto (.). Vea el ejemplo a continuación.

import java.util.Arrays;
public class SimpleTesting {
  public static void main(String[] args) {
    String fileName = "folder\s.gr\fg\student-records.pdf";
    String fe = "";
    if (fileName.contains(".")) {
      fe = Arrays.stream(fileName.split("\\.")).reduce((a, b) -> b).orElse(null);
    }
    System.out.println("File extension is : " + fe);
  }
}

Resultado:

File extension is : pdf

Obtener la extensión de un archivo usando Regex en Java

Esta es otra solución que utiliza el paquete regex. El método compile() y matcher() de la clase Pattern se usa para obtener la extensión del archivo en este ejemplo de Java. Mira el ejemplo a continuación.

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SimpleTesting {
  public static void main(String[] args) {
    String fileName = "folder\s.gr\fg\student-records.pdf";
    String fe = "";
    final Pattern PATTERN = Pattern.compile("(.*)\\.(.*)");
    Matcher m = PATTERN.matcher(fileName);
    if (m.find()) {
      fe = m.group(2);
    }
    System.out.println("File extension is : " + fe);
  }
}

Resultado:

File extension is : pdf

Artículo relacionado - Java IO

Artículo relacionado - Java File