logo

Klasa Java BufferedOutputStream

W Javie klasa BufferedOutputStream służy do wydajniejszego zapisywania danych w strumieniu wyjściowym. Dodaje bufor do innego strumienia wyjściowego, zmniejszając liczbę operacji we/wy poprzez tymczasowe przechowywanie danych w pamięci przed zapisaniem ich w miejscu docelowym (jak plik).

Należy do pakietu java.io i stanowi rozszerzenie klasy FilterOutputStream.

Deklaracja klasy

klasa publiczna BufferedOutputStream rozszerza FilterOutputStream



  • Poprawia wydajność operacji we/wy poprzez użycie bufora w celu ograniczenia bezpośredniego dostępu do dysku.
  • Dane są zapisywane w buforze i dopiero gdy bufor jest pełny (lub opróżniony), są wysyłane do bazowego strumienia wyjściowego.
  • Zwykle używany z FileOutputStream.
  • Pomaga w zapisywaniu danych bajtowych, takich jak obrazy, pliki tekstowe i dane binarne.

Konstruktorzy

  • Buforowany strumień wyjściowy (wyjście strumienia wyjściowego): Tworzy buforowany strumień wyjściowy o domyślnym rozmiarze bufora wynoszącym 8192 bajtów.
  • BufferedOutputStream(OutputStream out int size): Tworzy buforowany strumień wyjściowy o określonym rozmiarze buforu.

Ważne metody

MetodaOpis
void write(int b)Zapisuje pojedynczy bajt w strumieniu wyjściowym.
void write(byte[] b int off int len)Zapisuje część tablicy bajtów w strumieniu wyjściowym.
void flush()Opróżnia bufor i wymusza zapisanie wszystkich buforowanych bajtów wyjściowych.
void close()Zamyka strumień, najpierw go płucząc.

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

Dane wyjściowe (zawartość pliku wyjściowego.txt):

BufferedOutputStream w przykładzie Java

Przykład 2: Użycie 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();  }  } } 

Dane wyjściowe (zawartość pliku Flush.txt):

Cześć

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

Dane wyjściowe (zawartość pierwszych kilku wierszy dużego.txt):

Linia 0

Linia 1

Linia 2

...

Zalety

  • Szybsza wydajność zapisu w porównaniu do strumieni niebuforowanych.
  • Zmniejsza liczbę fizycznych operacji zapisu.
  • Umożliwia wydajne zapisywanie dużych danych.
Utwórz quiz