Java java.nio.file.Files newBufferedReader()-Methode

Java File Java java.nio.file.Files


java.nio.file.Files.newBufferedReader()ist eine sehr praktische Methode im Java-NIO-Paket (New Input/Output), mit der Textdateien effizient gelesen werden können. Sie befindet sich injava.nio.filedem Paket und ist Teil der in Java 7 eingeführten Datei-I/O-Verbesserungen.

Der Hauptzweck der Methode newBufferedReader() besteht darin, einBufferedReaderObjekt, das verwendet wird, um Textinhalt effizient aus der Datei am angegebenen Pfad zu lesen. Verglichen mit der traditionellen MethodeFileReaderbietet er eine bessere Leistung, da er einen Pufferungsmechanismus verwendet.

Methodendefinition

FilesDie Klasse bietet zwei überladenenewBufferedReaderMethoden:

public static BufferedReader newBufferedReader(Path path) throws IOException
public static BufferedReader newBufferedReader(Path path, Charset charset) throws IOException

Parameterbeschreibung

  • path: der Pfad der zu lesenden Datei, vom Typjava.nio.file.Path
  • charset(optional): der Zeichensatz, der zum Dekodieren der Datei verwendet wird, vom Typjava.nio.charset.Charset

Rückgabewert

Gibt ein neuesBufferedReaderObjekt zurück, das zum Lesen des Dateiinhalts verwendet werden kann.

Ausnahmen

  • IOException: wenn beim Öffnen der Datei ein E/A-Fehler auftritt
  • SecurityException: wenn ein Sicherheitsmanager vorhanden ist und den Zugriff auf die Datei verweigert

Beispiele für die Verwendung der Methode

Grundlegende Verwendung

Beispiel

import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.Path;
import java.nio.file.Paths;

public class FileReaderExample {
    public static void main(String[] args) {
        Path path = Paths.get("example.txt");
       
        try (BufferedReader reader = Files.newBufferedReader(path)) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Zeichensatz angeben

Beispiel

import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.Path;
import java.nio.file.Paths;

public class FileReaderWithCharset {
    public static void main(String[] args) {
        Path path = Paths.get("example.txt");
       
        try (BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8)) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Methodenmerkmale und Vorteile

Pufferungsmechanismus

newBufferedReader()Der erstellteBufferedReaderverwendet einen internen Puffer, was bedeutet:

  • Weniger tatsächliche I/O-Operationen
  • Verbesserte Leistung beim Lesen großer Mengen von Textdaten
  • Geeignet zum Lesen großer Dateien

Automatische Ressourcenverwaltung

Bei Verwendung mit einer try-with-resources-Anweisung (wie im obigen Beispiel),BufferedReaderwird automatisch geschlossen, ohne dass ein manueller Aufruf erforderlich istclose()Methode.

Unterstützung für Zeichensätze

Sie können einen Zeichensatz angeben, um Textdateien mit unterschiedlichen Kodierungen korrekt zu lesen und fehlerhafte Zeichen zu vermeiden.


Hinweise

Prüfung der Dateiexistenz

Vor dem AufrufnewBufferedReader()können SieFiles.exists(path)verwenden, um zu prüfen, ob die Datei existiert:

Beispiel

if (Files.exists(path)) {
    // Datei lesen
} else {
    System.out.println("Datei existiert nicht");
}

Leistungsüberlegungen

Bei sehr großen Dateien ist das zeilenweise Lesen (readLine()) möglicherweise nicht die effizienteste Methode. In diesem Fall sollten Sie die Verwendung derFiles.lines()Methode in Betracht ziehen, die einenStream<String>, der parallele Verarbeitung nutzen kann, um die Leistung zu verbessern.

5.3 Ausnahmebehandlung

Behandeln Sie immer ordnungsgemäßIOException, insbesondere in Produktionsumgebungen. Das obige Beispiel verwendet eine einfacheprintStackTrace(); in tatsächlichen Anwendungen kann eine detailliertere Fehlerbehandlungslogik erforderlich sein.


Vergleich mit anderen Methoden

Vergleich mit herkömmlichem FileReader

Beispiel

// Traditionelle Methode
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));

// NIO-Weg
BufferedReader reader = Files.newBufferedReader(Paths.get("file.txt"));

Vorteile des NIO-Ansatzes:

  • Prägnantere API
  • Bessere Ausnahmebehandlung
  • Unterstützt Path-Objekte, besser kompatibel mit anderen NIO-Operationen

Vergleich mit Files.readAllLines()

Files.readAllLines()liest alle Zeilen auf einmal in den Speicher ein, geeignet für kleine Dateien. Im Gegensatz dazunewBufferedReader()ist geeignet, große Dateien Zeile für Zeile zu verarbeiten.


Zusammenfassung

java.nio.file.Files.newBufferedReader()ist eine leistungsstarke und flexible Methode zum effizienten Lesen von Textdateien. Sie kombiniert die Vorteile gepufferter I/O mit dem modernen API-Design von NIO und ist damit eine der bevorzugten Methoden zum Lesen von Textdateien in Java.

Wichtige Punkte:

  • Verwendet Pufferung, um die Leseleistung zu verbessern
  • Unterstützt die Angabe eines Zeichensatzes, um Kodierungsprobleme zu vermeiden
  • Verwendung mit try-with-resources, um die Freigabe von Ressourcen sicherzustellen
  • Geeignet für die Verarbeitung großer Textdateien

Wählen Sie in der tatsächlichen Entwicklung die geeignete Methodenvariante entsprechend den spezifischen Anforderungen und achten Sie stets auf Ausnahmebehandlung und Ressourcenverwaltung.

Java File Java java.nio.file.Files

Andere Erweiterungen