Was ist der Vorteil des Bufferings?
sobes.tech KI
Antwort von AI
Das Buffering in Java I/O reduziert die Anzahl der Zugriffe auf niedrigstufige Ein- und Ausgabefunktionen, was die Leistung erheblich steigert. Das Lesen/Schreiben großer Datenblöcke in einem Systemaufruf ist effizienter als mehrere kleine Operationen.
Beim Lesen: BufferedInputStream liest Daten vom Basistrom in den Puffer. Wenn kleine Datenmengen angefordert werden, werden sie aus dem Puffer entnommen, ohne jedes Mal auf die Quelle (Festplatte, Netzwerk) zugreifen zu müssen. Erst wenn der Puffer leer ist, erfolgt ein neuer Datenblock-Lesevorgang.
Beim Schreiben: BufferedOutputStream schreibt zunächst Daten in den Puffer. Das Schreiben in den Basistrom erfolgt entweder beim Füllen des Puffers oder beim Aufruf der Methode flush(). Dies minimiert die Anzahl der Systemaufrufe zum Schreiben.
Vorteile:
- Reduzierung der Overheads: Verringert die Anzahl der Zugriffe auf das Betriebssystem und die Hardware.
- Erhöhung der Durchsatzrate: Daten werden in großen Blöcken übertragen.
- Leistungssteigerung: Die Gesamtzeit der Ein- und Ausgabevorgänge wird verkürzt.
Beispiel für die Verwendung von BufferedInputStream:
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
try (FileInputStream fileInputStream = new FileInputStream("example.txt");
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream)) {
int data;
while ((data = bufferedInputStream.read()) != -1) {
// Verarbeitung des gelesenen Bytes
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}