logo

Клас 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

...

Переваги

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