În Java, clasa BufferedOutputStream este folosită pentru a scrie mai eficient datele într-un flux de ieșire. Acesta adaugă un buffer la un alt flux de ieșire reducând numărul de operațiuni I/O prin stocarea temporară a datelor în memorie înainte de a le scrie la destinație (ca un fișier).
Acesta aparține pachetului java.io și extinde clasa FilterOutputStream.
Declarație de clasă
clasa publică BufferedOutputStream extinde FilterOutputStream
- Îmbunătățește performanța I/O prin utilizarea unui buffer pentru a reduce accesul direct la disc.
- Datele sunt scrise în buffer și numai când tamponul este plin (sau golit) sunt trimise la fluxul de ieșire de bază.
- Utilizat de obicei cu FileOutputStream.
- Ajută la scrierea datelor de octeți, cum ar fi fișierele text imagini și date binare.
Constructorii
- BufferedOutputStream(OutputStream out): Creează un flux de ieșire tamponat cu o dimensiune implicită a tamponului de 8192 de octeți.
- BufferedOutputStream(OutputStream out int size): Creează un flux de ieșire tamponat cu dimensiunea tampon specificată.
Metode importante
| Metodă | Descriere |
|---|---|
void write(int b) | Scrie un singur octet în fluxul de ieșire. |
void write(byte[] b int off int len) | Scrie o porțiune din matricea de octeți în fluxul de ieșire. |
void flush() | Șterge tamponul și forțează scrierea oricăror octeți de ieșire din buffer. |
void close() | Închide fluxul, spălându-l mai întâi. |
Java import java.io.*; public class BufferedOutputStreamExample { public static void main(String[] args) { String data = 'BufferedOutputStream in Java Example'; try { FileOutputStream fileOut = new FileOutputStream('output.txt'); BufferedOutputStream bufferOut = new BufferedOutputStream(fileOut); byte[] bytes = data.getBytes(); bufferOut.write(bytes); bufferOut.close(); System.out.println('Data written successfully.'); } catch (IOException e) { e.printStackTrace(); } } }
import java.io.*; public class BufferedOutputStreamExample { public static void main(String[] args) { String data = 'BufferedOutputStream in Java Example'; try { FileOutputStream fileOut = new FileOutputStream('output.txt'); BufferedOutputStream bufferOut = new BufferedOutputStream(fileOut); byte[] bytes = data.getBytes(); bufferOut.write(bytes); bufferOut.close(); System.out.println('Data written successfully.'); } catch (IOException e) { e.printStackTrace(); } } }
BufferedOutputStream în exemplu Java
Exemplul 2: Folosind metoda flush().
Javaimport java.io.*; public class FlushExample { public static void main(String[] args) { try { FileOutputStream fileOut = new FileOutputStream('flush.txt'); BufferedOutputStream bufferOut = new BufferedOutputStream(fileOut); bufferOut.write('Hello'.getBytes()); bufferOut.flush(); // ensures data is written immediately bufferOut.close(); System.out.println('Flush example completed.'); } catch (IOException e) { e.printStackTrace(); } } }
Ieșire (conținutul flush.txt):
Buna ziua
Java import java.io.*; public class LargeDataExample { public static void main(String[] args) { try { FileOutputStream fileOut = new FileOutputStream('large.txt'); BufferedOutputStream bufferOut = new BufferedOutputStream(fileOut 8192); // custom buffer size for (int i = 0; i < 1000; i++) { bufferOut.write(('Line ' + i + 'n').getBytes()); } bufferOut.close(); System.out.println('Large data written successfully.'); } catch (IOException e) { e.printStackTrace(); } } }
import java.io.*; public class LargeDataExample { public static void main(String[] args) { try { FileOutputStream fileOut = new FileOutputStream('large.txt'); BufferedOutputStream bufferOut = new BufferedOutputStream(fileOut 8192); // custom buffer size for (int i = 0; i < 1000; i++) { bufferOut.write(('Line ' + i + 'n').getBytes()); } bufferOut.close(); System.out.println('Large data written successfully.'); } catch (IOException e) { e.printStackTrace(); } } }
Ieșire (conținutul primelor linii large.txt):
Linia 0
Linia 1
Linia 2
...
Avantaje
- Performanță de scriere mai rapidă în comparație cu fluxurile fără tampon.
- Reduce numărul de operațiuni de scriere fizică.
- Permite scrierea eficientă a datelor mari.