Wie man eine große Textdatei Zeile für Zeile in Java liest

Hassan Saeed 12 Oktober 2023
  1. BufferedReader zum zeilenweisen Lesen von Dateien in Java
  2. Stream zum zeilenweisen Lesen von Dateien in Java
  3. Scanner zum zeilenweisen Lesen von Dateien in Java
Wie man eine große Textdatei Zeile für Zeile in Java liest

In diesem Tutorial werden Methoden besprochen, um eine große Textdatei Zeile für Zeile effizient in Java zu lesen.

Es gibt zahlreiche Methoden, um eine Textdatei in Java zu lesen. Dieses Tutorial ist jedoch speziell auf das Lesen großer Textdateien ausgerichtet, und wir werden die drei effizientesten Methoden zum schnellen Lesen großer Textdateien besprechen.

BufferedReader zum zeilenweisen Lesen von Dateien in Java

Die Klasse BufferedReader in Java liest Text aus einem gegebenen Zeicheneingabestrom und puffert Zeichen, um ein effizientes Lesen von Zeichen, Arrays und Zeilen zu ermöglichen. Diese Methode bietet ein effizientes zeilenweises Lesen für die Eingabedateien mit einer beträchtlich großen Dateigröße.

Das folgende Beispiel veranschaulicht die Verwendung von BufferedReader zum Lesen einer txt Datei und zur zeilenweisen Ausgabe ihres Inhalts.

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 zum zeilenweisen Lesen von Dateien in Java

Benutzer von Java 8 und höher können auch Stream verwenden, um große Dateien Zeile für Zeile zu lesen. Das folgende Beispiel illustriert die Verwendung von Stream, um eine txt-Datei zu lesen und ihren Inhalt Zeile für Zeile auszugeben.

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

Die beiden oben besprochenen Methoden würden die Eingabedatei Zeile für Zeile lesen, anstatt die gesamte Datei in den Speicher einzulesen. Daher sind diese beiden Methoden sehr effizient, wenn wir eine große Datei haben, die nicht vollständig in den Speicher eingelesen werden kann.

Wenn unser Speicher jedoch groß genug ist, um die Eingabedatei vollständig zu lesen, können wir auch die unten beschriebene Methode ausprobieren.

Scanner zum zeilenweisen Lesen von Dateien in Java

Die Klasse Scanner in Java ist ein einfacher Textscanner, der primitive Typen und Zeichenketten mit Hilfe von regulären Ausdrücken parsen kann. Scanner(File source) liest die komplette Datei in den Speicher und verarbeitet sie dann Zeile für Zeile.

Das folgende Beispiel illustriert die Verwendung von Scanner, um eine txt-Datei zu lesen und ihren Inhalt Zeile für Zeile auszugeben.

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

Wir haben drei Methoden besprochen, um eine große Textdatei in Java zu lesen und Zeile für Zeile zu verarbeiten. Jede Methode hatte einige Einschränkungen und Vorteile, die wir bei der Entscheidung, welche Methode in einem bestimmten Szenario verwendet werden soll, berücksichtigen müssen.

Verwandter Artikel - Java File