logo

Java BufferedOutputStream клас

В Java класът BufferedOutputStream се използва за по-ефективно записване на данни в изходен поток. Той добавя буфер към друг изходен поток, намалявайки броя на входно-изходните операции чрез временно съхраняване на данни в паметта, преди да ги запише на дестинацията (като файл).

Той принадлежи към пакета java.io и разширява класа FilterOutputStream.

Декларация на класа

публичен клас BufferedOutputStream разширява FilterOutputStream



  • Подобрява I/O производителността чрез използване на буфер за намаляване на директния достъп до диска.
  • Данните се записват в буфера и само когато буферът е пълен (или изчистен), се изпращат към основния изходен поток.
  • Обикновено се използва с 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

...

Предимства

  • По-бързо записване в сравнение с небуферирани потоци.
  • Намалява броя на физическите операции за запис.
  • Позволява ефективно записване на големи данни.
Създаване на тест