Leggere un grande file di testo linea per linea in Java
-
BufferedReader
per leggere file linea per linea in Java -
Stream
per leggere file linea per linea in Java -
Scanner
per leggere file 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.