Java BufferedOutputStream (s príkladmi)

V tomto výučbe sa pomocou príkladov dozvieme o prostredí Java BufferedOutputStream a jeho metódach.

BufferedOutputStreamTrieda java.iobalenia je používaný s inými výstupnými prúdmi pre zápis dát (v bytoch) efektívnejšie.

Rozširuje OutputStreamabstraktnú triedu.

Práca BufferedOutputStream

BufferedOutputStreamUdržuje vnútornej vyrovnávacej pamäte 8192 bajtov .

Počas operácie zápisu sa bajty zapisujú do internej medzipamäte namiesto na disk. Akonáhle je vyrovnávacia pamäť naplnená alebo je prúd uzavretý, celá vyrovnávacia pamäť sa zapíše na disk.

Preto sa zníži počet komunikácií na disk. To je dôvod, prečo je zápis bajtov rýchlejší BufferedOutputStream.

Vytvorte BufferedOutputStream

Aby sme vytvorili BufferedOutputStream, musíme najskôr importovať java.io.BufferedOutputStreambalík. Po importovaní balíka tu môžeme vytvoriť výstupný prúd.

 // Creates a FileOutputStream FileOutputStream file = new FileOutputStream(String path); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferOutputStream(file); 

Vo vyššie uvedenom príklade sme vytvorili BufferdOutputStreampomenovanú vyrovnávaciu pamäť s FileOutputStreampomenovaným súborom.

Tu má interná vyrovnávacia pamäť predvolenú veľkosť 8192 bajtov. Môžeme však určiť aj veľkosť internej medzipamäte.

 // Creates a BufferedOutputStream with specified size internal buffer BufferedOutputStream buffer = new BufferOutputStream(file, int size); 

Vyrovnávacia pamäť pomôže rýchlejšie zapisovať bajty do súborov.

Metódy BufferedOutputStream

BufferedOutputStreamTrieda poskytuje implementácie pre rôzne metódy v OutputStreamtriede.

metóda write ()

  • write() - zapíše jeden bajt do vnútornej medzipamäte výstupného toku
  • write(byte() array) - zapisuje bajty zo zadaného poľa do výstupného toku
  • write(byte() arr, int start, int length) - zapíše počet bajtov rovných dĺžke do výstupného toku z poľa počnúc od začiatku polohy

Príklad: BufferedOutputStream na zapisovanie údajov do súboru

 import java.io.FileOutputStream; import java.io.BufferedOutputStream; public class Main ( public static void main(String() args) ( String data = "This is a line of text inside the file"; try ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream("output.txt"); // Creates a BufferedOutputStream BufferedOutputStream output = new BufferedOutputStream(file); byte() array = data.getBytes(); // Writes data to the output stream output.write(array); output.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Vo vyššie uvedenom príklade sme vytvorili medzipamäť výstupného toku s názvom output spolu s FileOutputStream. Výstupný prúd je prepojený so súborom output.txt .

 FileOutputStream file = new FileOutputStream("output.txt"); BufferedOutputStream output = new BufferedOutputStream(file); 

Na zápis údajov do súboru sme použili write()metódu.

Tu, keď spustíme program, je súbor output.txt naplnený nasledujúcim obsahom.

 This is a line of text inside the file. 

Poznámka : getBytes()Metóda použitá v programe prevádza reťazec na pole bajtov.

flush () metóda

Na vyčistenie interného bufferu môžeme použiť flush()metódu. Táto metóda núti výstupný prúd zapisovať všetky údaje prítomné vo vyrovnávacej pamäti do cieľového súboru. Napríklad,

 import java.io.FileOutputStream; import java.io.BufferedOutputStream; public class Main ( public static void main(String() args) ( String data = "This is a demo of the flush method"; try ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream(" flush.txt"); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferedOutputStream(file); // Writes data to the output stream buffer.write(data.getBytes()); // Flushes data to the destination buffer.flush(); System.out.println("Data is flushed to the file."); buffer.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Výkon

 Údaje sa do súboru prenesú. 

Keď spustíme program, súbor flush.txt sa vyplní textom predstavovaným údajmi reťazca.

metóda close ()

Na zatvorenie medzipamäťového výstupného toku môžeme použiť close()metódu. Po zavolaní metódy nemôžeme použiť výstupný prúd na zápis údajov.

Ak sa chcete dozvedieť viac, navštívte Java BufferedOutputStream (oficiálna dokumentácia Java).

Zaujímavé články...