Leggere un grande file di testo linea per linea in Java

Hassan Saeed 12 ottobre 2023
  1. BufferedReader per leggere file linea per linea in Java
  2. Stream per leggere file linea per linea in Java
  3. Scanner per leggere file linea per linea in Java
Leggere un grande file di testo linea per linea in Java

Questo tutorial discute i metodi per leggere un grande file di testo linea per linea in modo efficiente in Java.

Esistono numerosi metodi per leggere un file di testo in Java. Tuttavia, questo tutorial è specifico per la lettura di grande file di testo e discuteremo i tre metodi più efficienti per leggere rapidamente grande file di testo.

BufferedReader per leggere file linea per linea in Java

La classe BufferedReader in Java legge il testo da un dato flusso di input di caratteri, bufferizzando i caratteri per fornire una lettura efficiente di caratteri, array e linee. Questo metodo fornisce una lettura efficiente linea per linea per i file di input con una dimensione di file considerevolmente grande.

L’esempio seguente illustra l’uso di BufferedReader per leggere un file txt e visualizzare il suo contenuto linea per linea.

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 per leggere file linea per linea in Java

Gli utenti Java 8 e superiori possono anche utilizzare Stream per leggere file di grandi dimensioni linea per linea. L’esempio seguente illustra l’uso di Stream per leggere un file txt e visualizzare il suo contenuto linea per linea.

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();
    }
  }
}

I due metodi sopra discussi leggono il file di input linea per linea invece di leggere l’intero file in memoria. Pertanto questi due metodi sono altamente efficienti se abbiamo un file enorme che non può essere letto completamente nella memoria.

Tuttavia, se la nostra memoria è abbastanza grande da leggere completamente il file di input, possiamo anche provare il metodo seguente.

Scanner per leggere file linea per linea in Java

La classe Scanner in Java è un semplice scanner di testo che può analizzare tipi e stringhe primitive utilizzando espressioni regolari. Scanner(File source) legge il file completo in memoria e poi lo elabora linea per linea.

L’esempio seguente illustra l’uso di Scanner per leggere un file txt e visualizzare il suo contenuto linea per linea.

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);
    }
  }
}

Abbiamo discusso tre metodi per leggere un grande file di testo in Java ed elaborarlo linea per linea. Ogni metodo aveva alcuni vincoli e vantaggi che dobbiamo considerare quando decidiamo quale metodo utilizzare in uno scenario particolare.

Articolo correlato - Java File