Trieda Java BufferedOutputStream
V jazyku Java sa trieda BufferedOutputStream používa na efektívnejšie zapisovanie údajov do výstupného toku. Pridáva vyrovnávaciu pamäť do iného výstupného toku, čím znižuje počet I/O operácií dočasným ukladaním údajov do pamäte pred ich zapísaním do cieľa (ako súbor).
Patrí do balíka java.io a rozširuje triedu FilterOutputStream.
Vyhlásenie o triede
public class BufferedOutputStream rozširuje FilterOutputStream
- Zlepšuje výkon I/O pomocou vyrovnávacej pamäte na zníženie priameho prístupu na disk.
- Údaje sa zapisujú do vyrovnávacej pamäte a až keď je vyrovnávacia pamäť plná (alebo vyprázdnená), odošlú sa do základného výstupného toku.
- Zvyčajne sa používa s FileOutputStream.
- Pomáha pri písaní bajtových údajov, ako sú textové súbory obrázkov a binárne údaje.
Konštruktéri
- BufferedOutputStream(OutputStream out): Vytvorí výstupný tok s vyrovnávacou pamäťou s predvolenou veľkosťou vyrovnávacej pamäte 8192 bajtov.
- BufferedOutputStream(OutputStream out int veľkosť): Vytvorí výstupný tok s vyrovnávacou pamäťou so zadanou veľkosťou vyrovnávacej pamäte.
Dôležité metódy
| Metóda | Popis |
|---|---|
void write(int b) | Zapíše jeden bajt do výstupného toku. |
void write(byte[] b int off int len) | Zapíše časť bajtového poľa do výstupného toku. |
void flush() | Vyprázdni vyrovnávaciu pamäť a vynúti zápis všetkých výstupných bajtov vo vyrovnávacej pamäti. |
void close() | Zatvorí prúd a najprv ho prepláchne. |
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 (); } } }
Výstup (obsah súboru output.txt):
Príklad BufferedOutputStream v jazyku Java
Príklad 2: Použitie metódy 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 (); } } }
Výstup (obsah flush.txt):
Dobrý deň
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 (); } } }
Výstup (obsah prvých pár riadkov large.txt):
Riadok 0
Riadok 1
Riadok 2
...
Výhody
- Rýchlejší zápis v porovnaní s streamami bez vyrovnávacej pamäte.
- Znižuje počet operácií fyzického zápisu.
- Umožňuje efektívne zapisovanie veľkých dát.