Java java.nio.file.Files readAllLines()Método

Java File Java java.nio.file.Files

readAllLines()El método se utiliza para leer todas las líneas de un archivo y devolverlas comoList<String>Devuelve.

readAllLines()El método tiene dos versiones sobrecargadas:

public static List<String> readAllLines(Path path) throws IOException

public static List<String> readAllLines(Path path, Charset cs) throws IOException

La primera versión utiliza el conjunto de caracteres predeterminado (UTF-8) para leer el archivo; la segunda permite especificar un conjunto de caracteres.

Descripción de parámetros

Path path

  • Tipo:java.nio.file.Path
  • Descripción: objeto de ruta del archivo a leer
  • Ejemplo:
    Path filePath = Paths.get("example.txt");

Charset cs(parámetro opcional)

  • Tipo:java.nio.charset.Charset
  • Descripción: conjunto de caracteres utilizado para decodificar el contenido del archivo
  • Conjuntos de caracteres comunes:
    • StandardCharsets.UTF_8
    • StandardCharsets.ISO_8859_1
    • StandardCharsets.US_ASCII
  • Ejemplo:
    Charset charset = StandardCharsets.UTF_8;

Valor de retorno

  • Tipo:List<String>
  • Descripción: lista que contiene todas las líneas del archivo; cada elemento representa una línea del archivo
  • Nota:
    • Separador de línea (como\no\r\n) no se incluirá en la cadena devuelta
    • Si el archivo está vacío, devuelve una lista vacía
    • El orden de la lista coincide con el orden de las líneas del archivo

Manejo de excepciones

readAllLines()El método puede lanzar las siguientes excepciones:

  1. IOException- Si se produce un error de E/S (por ejemplo, el archivo no existe)
  2. SecurityException- Si no hay permisos suficientes para acceder al archivo

Se recomienda manejar las excepciones al usarlo:

Ejemplo

try {
    List<String> lines = Files.readAllLines(path);
    // Procesar el contenido leído
} catch (IOException e) {
    e.printStackTrace();
    // Manejar situaciones de excepción
}

Ejemplos de uso

Ejemplo 1: Uso básico

Ejemplo

import java.nio.file.*;
import java.util.List;

public class ReadFileExample {
    public static void main(String[] args) {
        Path filePath = Paths.get("example.txt");
       
        try {
            List<String> lines = Files.readAllLines(filePath);
           
            // Imprimir el contenido del archivo
            for (String line : lines) {
                System.out.println(line);
            }
        } catch (IOException e) {
            System.err.println("Error al leer el archivo: " + e.getMessage());
        }
    }
}

Ejemplo 2: Especificar conjunto de caracteres

Ejemplo

import java.nio.file.*;
import java.nio.charset.StandardCharsets;
import java.util.List;

public class ReadFileWithCharset {
    public static void main(String[] args) {
        Path filePath = Paths.get("example.txt");
       
        try {
            List<String> lines = Files.readAllLines(filePath, StandardCharsets.UTF_8);
           
            // Procesar el contenido del archivo
            lines.forEach(System.out::println);
        } catch (IOException e) {
            System.err.println("Error al leer el archivo: " + e.getMessage());
        }
    }
}

Notas

  1. Tamaño del archivo: Este método lee todo el archivo en la memoria de una sola vez, por lo que no es adecuado para procesar archivos muy grandes (por ejemplo, archivos de más de unos cientos de MB)
  2. Codificación de caracteres: Asegúrese de usar el conjunto de caracteres correcto; de lo contrario, puede provocar caracteres ilegibles
  3. Final de línea: Diferentes sistemas operativos usan distintos finales de línea (Windows usa\r\n, Unix/Linux usa\n), peroreadAllLines()manejará correctamente estas diferencias
  4. Consideraciones de rendimiento: Para archivos grandes, considere usarBufferedReaderylines()el método para procesamiento por flujo

Alternativas

Si necesita procesar archivos grandes, puede considerar los siguientes métodos alternativos:

Ejemplo

try (Stream<String> stream = Files.lines(path)) {
    stream.forEach(System.out::println);
} catch (IOException e) {
    e.printStackTrace();
}

Este método utiliza procesamiento por flujo y no carga todo el archivo en la memoria de una sola vez.


Resumen

Files.readAllLines()Es un método simple y fácil de usar, adecuado para leer archivos de texto pequeños. Proporciona una forma cómoda de obtener todo el contenido de líneas de un archivo, pero al procesar archivos grandes se debe prestar atención al consumo de memoria. Elegir el método de lectura de archivos adecuado según las necesidades reales puede mejorar en gran medida la eficiencia y la estabilidad del programa.

Java File Java java.nio.file.Files

Otras extensiones