Leer fichero en Java usando try-with-resources

En el siguiente ejemplo podemos ver como podemos leer un fichero en java en «UTF-8» y con «try-with-resources».

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class LeerArchivoUTF8 {
    public static void main(String[] args) {
        // Ruta del archivo que quieres leer
        String rutaArchivo = "ruta_del_archivo.txt";

        // Utilizando try-with-resources para asegurar la correcta gestión de recursos
        try (
            // Crear un objeto File para representar el archivo
            FileInputStream fis = new FileInputStream(new File(rutaArchivo));
            InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
            BufferedReader br = new BufferedReader(isr)
        ) {
            // Leer el archivo línea por línea
            String linea;
            while ((linea = br.readLine()) != null) {
                System.out.println(linea);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

La estructura try-with-resources en Java proporciona una forma más limpia y eficiente de trabajar con recursos que deben cerrarse explícitamente, como archivos, sockets o bases de datos. Aquí hay algunos beneficios clave de utilizar try-with-resources:

  1. Cierre Automático de Recursos:

    • En el bloque try-with-resources, los recursos se cierran automáticamente al salir del bloque, eliminando la necesidad de cerrar explícitamente los recursos en un bloque finally. Esto mejora la legibilidad del código y reduce la posibilidad de errores relacionados con la gestión de recursos.
  2. Más Conciso y Legible:

    • El código se vuelve más conciso y fácil de leer, ya que la apertura y el cierre de los recursos se manejan en un solo lugar. Esto evita la repetición de bloques try-catch-finally para diferentes recursos.
  3. Manejo de Excepciones Mejorado:

    • Si se producen excepciones tanto en el bloque try como al cerrar los recursos, try-with-resources gestiona automáticamente las excepciones y proporciona una forma más clara de manejar los errores.
  4. Menos Probabilidad de Errores:

    • Al evitar la necesidad de cerrar manualmente los recursos, se reduce la probabilidad de olvidar cerrar un recurso, lo que podría llevar a fugas de recursos y problemas de rendimiento.
  5. Mayor Seguridad:

    • La estructura try-with-resources mejora la seguridad del código al garantizar que los recursos se cierren correctamente, incluso en situaciones de excepción.
  6. Compatibilidad con AutoCloseable e Closeable:

    • Los recursos utilizados en try-with-resources deben implementar la interfaz AutoCloseable o Closeable. Esto permite que una amplia gama de clases, como las proporcionadas por la API estándar de Java, se utilicen con esta estructura.

En resumen, try-with-resources simplifica la gestión de recursos, mejora la legibilidad del código y reduce la posibilidad de errores relacionados con el manejo manual de recursos en Java. Es una característica valiosa introducida en Java 7 que ha mejorado significativamente la calidad y la robustez del código que utiliza recursos que requieren cierre explícito.