Клас Java BufferedOutputStream

У Java клас BufferedOutputStream використовується для більш ефективного запису даних у вихідний потік. Він додає буфер до іншого вихідного потоку, зменшуючи кількість операцій вводу/виводу, тимчасово зберігаючи дані в пам’яті перед записом їх у місце призначення (наприклад, у файл).

Він належить до пакету java.io і розширює клас FilterOutputStream.

Оголошення класу

відкритий клас BufferedOutputStream розширює FilterOutputStream

  • Покращує продуктивність введення-виведення за допомогою буфера для зменшення прямого доступу до диска.
  • Дані записуються в буфер, і лише коли буфер заповнений (або очищений), вони надсилаються до основного вихідного потоку.
  • Зазвичай використовується з FileOutputStream.
  • Допомагає записувати байтові дані, такі як текстові файли зображень і двійкові дані.

Конструктори

  • BufferedOutputStream(OutputStream out): Створює буферизований вихідний потік із стандартним розміром буфера 8192 байт.
  • BufferedOutputStream(OutputStream out int size): Створює буферизований вихідний потік із указаним розміром буфера.

Важливі методи

метод опис
void write(int b) Записує один байт у вихідний потік.
void write(byte[] b int off int len) Записує частину масиву байтів у вихідний потік.
void flush() Очищає буфер і примусово записує будь-які буферизовані вихідні байти.
void close() Закриває потік, спочатку очищаючи його.

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

Вихід (вміст output.txt):

Приклад BufferedOutputStream у Java

Приклад 2: Використання методу 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  ();      }      }   }   

Вихід (вміст flush.txt):

Привіт

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

Вихід (вміст перших кількох рядків large.txt):

Рядок 0

Рядок 1

Рядок 2

...

Переваги

  • Швидша продуктивність запису порівняно з небуферизованими потоками.
  • Зменшує кількість операцій фізичного запису.
  • Дозволяє ефективно записувати великі дані.
Створіть вікторину