Care este avantajul buffering-ului?
sobes.tech AI
Răspuns de la AI
Bufferizarea în Java I/O reduce numărul de accesări ale operațiilor de intrare/ieșire de nivel inferior, ceea ce crește semnificativ performanța. Citirea/scrierea blocurilor mari de date într-un singur apel de sistem este mai eficientă decât multiple operații mici.
La citire: BufferedInputStream citește datele din fluxul de bază în memoria tampon. Când sunt solicitate porțiuni mici de date, acestea sunt preluate din tampon fără a fi nevoie să se acceseze sursa (disc, rețea) de fiecare dată. Doar când tamponul se golește, se face o nouă citire de bloc de date.
La scriere: BufferedOutputStream scrie mai întâi datele în tampon. Scrierea în fluxul de bază are loc fie când tamponul se umple, fie când se apelează metoda flush(). Acest lucru minimizează numărul de apeluri de sistem pentru scriere.
Avantaje:
- Reducerea costurilor suplimentare: Se reduce numărul de accesări ale sistemului de operare și hardware-ului.
- Creșterea lățimii de bandă: Datele sunt transmise în blocuri mari.
- Îmbunătățirea performanței: Timpul total al operațiilor de intrare/ieșire este redus.
Exemplu de utilizare a 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) {
// Procesarea byte-ului citit
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}