Třída Java BufferedOutputStream

V Javě se třída BufferedOutputStream používá k efektivnějšímu zápisu dat do výstupního proudu. Přidává vyrovnávací paměť do jiného výstupního toku a snižuje počet I/O operací dočasným uložením dat do paměti před jejich zápisem do cíle (jako soubor).

Patří do balíčku java.io a rozšiřuje třídu FilterOutputStream.

Třídní prohlášení

public class BufferedOutputStream rozšiřuje FilterOutputStream

  • Zlepšuje výkon I/O pomocí vyrovnávací paměti ke snížení přímého přístupu k disku.
  • Data se zapisují do vyrovnávací paměti a pouze když je vyrovnávací paměť plná (nebo vyprázdněná), jsou odeslána do základního výstupního proudu.
  • Obvykle se používá s FileOutputStream.
  • Pomáhá při zápisu bajtových dat, jako jsou textové soubory obrázků a binární data.

Konstruktéři

  • BufferedOutputStream(OutputStream out): Vytvoří výstupní proud s vyrovnávací pamětí s výchozí velikostí vyrovnávací paměti 8192 bajtů.
  • BufferedOutputStream(OutputStream out int velikost): Vytvoří výstupní proud s vyrovnávací pamětí se zadanou velikostí vyrovnávací paměti.

Důležité metody

Metoda Popis
void write(int b) Zapíše jeden bajt do výstupního proudu.
void write(byte[] b int off int len) Zapíše část bajtového pole do výstupního proudu.
void flush() Vyprázdní vyrovnávací paměť a vynutí zápis všech výstupních bajtů ve vyrovnávací paměti.
void close() Uzavře proud a nejprve jej proplá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  ();      }      }   }   

Výstup (obsah souboru output.txt):

Příklad BufferedOutputStream v Javě

Příklad 2: Použití metody 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):

Ahoj

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  ();      }      }   }   

Výstup (obsah velkého.txt prvních pár řádků):

Řádek 0

Řádek 1

Řádek 2

...

Výhody

  • Rychlejší zápis ve srovnání s streamy bez vyrovnávací paměti.
  • Snižuje počet fyzických operací zápisu.
  • Umožňuje efektivně zapisovat velká data.
Vytvořit kvíz