Clasa Java BufferedOutputStream
Î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().
Java import 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.