Java BufferedOutputStream: Effizientes Byte-Schreiben erklärt
Java BufferedOutputStream: Effizientes Byte-Schreiben erklärt
Beherrschen Sie die BufferedOutputStream Klasse – ihr Design, Nutzung und Kernmethoden – durch klare Erklärungen und praktische Code-Snippets.
Die BufferedOutputStream Klasse, Teil des java.io Pakets, wrapt einen anderen OutputStream, um byte-basierte Ausgabe zu beschleunigen. Durch Puffern von Daten im Speicher reduziert sie die Anzahl der Schreiboperationen auf das zugrundeliegende Gerät, was die Performance drastisch verbessern kann, besonders bei großen Dateien.
Sie erbt von der abstrakten OutputStream Klasse und stellt konkrete Implementierungen für deren Methoden bereit.
Wie BufferedOutputStream funktioniert
Der Stream allokiert intern standardmäßig einen 8 KiB (8.192 Bytes) Puffer. Wenn write() aufgerufen wird, werden Bytes zunächst in diesem Puffer gespeichert. Erst wenn der Puffer voll ist oder flush() bzw. close() aufgerufen wird, werden die Daten an den zugrundeliegenden Stream geflusht.
Da Festplatten-I/O teuer ist, reduziert diese Pufferstrategie Roundtrips und macht Byte-Schreibvorgänge erheblich schneller.
BufferedOutputStream erstellen
Importieren Sie die Klasse und wrappen Sie dann einen beliebigen OutputStream, typischerweise einen FileOutputStream:
FileOutputStream file = new FileOutputStream("output.txt");
BufferedOutputStream buffer = new BufferedOutputStream(file);
Um die Puffergröße zu steuern, geben Sie ein zweites Argument an:
BufferedOutputStream buffer = new BufferedOutputStream(file, 16384); // 16 KiB Puffer
Die Wahl eines größeren Puffers kann bei sehr großen Schreibvorgängen vorteilhaft sein, aber der Standard 8 KiB funktioniert für die meisten Szenarien gut.
Kernmethoden von BufferedOutputStream
Die Klasse implementiert den vollständigen Satz von OutputStream Methoden mit Pufferunterstützung.
write()
write(int b)– Fügt ein einzelnes Byte zum Puffer hinzu.write(byte[] b)– Schreibt ein ganzes Byte-Array.write(byte[] b, int off, int len)– SchreibtlenBytes ab Offsetoff.
Beispiel: Text in eine Datei schreiben
import java.io.*;
public class Main {
public static void main(String[] args) {
String data = "This is a line of text inside the file";
try (FileOutputStream fos = new FileOutputStream("output.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos)) {
bos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
Die Ausführung dieses Programms erstellt output.txt mit dem Inhalt:
This is a line of text inside the file
Hinweis: String.getBytes() konvertiert den String in ein Byte-Array unter Verwendung des plattformspezifischen Charsets. Für deterministische Ergebnisse geben Sie ein Charset an, z. B. data.getBytes(StandardCharsets.UTF_8).
flush()
Erzwingt, dass alle gepufferten Daten sofort in den zugrundeliegenden Stream geschrieben werden. Dies ist nützlich, wenn Sie Datenpersistenz vor dem Schließen des Streams sicherstellen müssen oder in einen Netzwerk-Socket schreiben.
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write(data.getBytes());
bos.flush(); // garantiert, dass Daten gesendet werden
close()
Schließt den Stream, flusht alle verbleibenden Daten und gibt Systemressourcen frei. Nach Aufruf von close() kann der Stream nicht mehr verwendet werden.
Für eine umfassende Referenz konsultieren Sie die offizielle Java-Dokumentation: BufferedOutputStream API.
Java
- Javas final-Schlüsselwort verstehen: Variablen, Methoden und Klassen
- Java instanceof-Operator: Ein umfassender Leitfaden
- Java-Vererbung meistern: Konzepte, Typen und praktische Beispiele
- Java statische verschachtelte Klassen verstehen: Nutzung, Unterschiede und Beispiele
- Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
- Java Singleton-Pattern erklärt: Sichere Implementierung und Verwendung
- Java Reflection meistern: Klassen, Methoden und Felder zur Laufzeit inspizieren
- Java ObjectOutputStream meistern: Serialisierung, Methoden und praktische Beispiele
- Java Generics meistern – Wiederverwendbaren, typsicheren Code erstellen
- Java-Dateioperationen mit java.io meistern – Erstellen, Lesen, Schreiben & Löschen