Cómo leer un archivo de texto grande línea por línea en Java

Hassan Saeed 12 octubre 2023
  1. BufferedReader para leer archivo línea por línea en Java
  2. Stream para leer el archivo línea por línea en Java
  3. Scanner para leer el archivo línea por línea en Java
Cómo leer un archivo de texto grande línea por línea en Java

Este tutorial discute los métodos para leer un archivo de texto grande línea por línea eficientemente en Java.

Hay numerosos métodos para leer un archivo de texto en Java. Sin embargo, este tutorial es específico para la lectura de archivos de texto grandes, y discutiremos los tres métodos más eficientes para leer archivos de texto grandes rápidamente.

BufferedReader para leer archivo línea por línea en Java

La clase BufferedReader en Java lee el texto de un flujo de entrada de caracteres dado, almacenando en memoria intermedia los caracteres para proporcionar una lectura eficiente de caracteres, matrices y líneas. Este método proporciona una lectura eficiente línea por línea para los archivos de entrada con un tamaño de archivo considerablemente grande.

El siguiente ejemplo ilustra el uso de BufferedReader para leer un archivo txt y emitir su contenido línea por línea.

import java.io.*;

public class Main {
  public static void main(String[] args) {
    String file = "my-file.txt";
    try (BufferedReader br = new BufferedReader(new FileReader(file))) {
      String line;
      while ((line = br.readLine()) != null) {
        System.out.println(line);
      }
    } catch (IOException e) {
      System.out.println("An error occurred.");
      e.printStackTrace();
    }
  }
}

Stream para leer el archivo línea por línea en Java

Los usuarios de Java 8 y superiores también pueden usar Stream para leer archivos grandes línea por línea. El siguiente ejemplo ilustra el uso de Stream para leer un archivo txt y mostrar su contenido línea por línea.

import java.io.*;
import java.nio.file.*;
import java.util.stream.*;

public class Main {
  public static void main(String[] args) {
    String file = "my-file.txt";
    try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
      stream.forEach(System.out::println);
    } catch (IOException e) {
      System.out.println("An error occurred.");
      e.printStackTrace();
    }
  }
}

Los dos métodos anteriores discutidos leerían el archivo de entrada línea por línea en lugar de leer todo el archivo en la memoria. Por lo tanto, estos dos métodos son altamente eficientes si tenemos un archivo enorme que no puede ser leído completamente en la memoria.

Sin embargo, si nuestra memoria es lo suficientemente grande como para leer el archivo de entrada completamente, también podemos intentar el siguiente método.

Scanner para leer el archivo línea por línea en Java

La clase Scanner en Java es un simple escáner de texto que puede analizar tipos y cadenas primitivas usando expresiones regulares. El escáner lee el archivo completo en la memoria y luego lo procesa línea por línea.

El siguiente ejemplo ilustra el uso de “Scanner” para leer un archivo txt y obtener su contenido línea por línea.

import java.io.*;
import java.util.*;

public class Main {
  public static void main(String[] args) throws IOException {
    String fileName = "my-file.txt";
    Scanner scan = new Scanner(new File(fileName));
    while (scan.hasNextLine()) {
      String line = scan.nextLine();
      System.out.println(line);
    }
  }
}

Discutimos tres métodos para leer un archivo de texto grande en Java y procesarlo línea por línea. Cada método tenía algunas limitaciones y ventajas que debemos considerar al decidir qué método utilizar en un escenario particular.

Artículo relacionado - Java File