Java BufferedOutputStream (z przykładami)

W tym samouczku dowiemy się o Javie BufferedOutputStream i jego metodach na przykładach.

BufferedOutputStreamKlasa java.iopakietu jest używany z innymi strumieniami wyjściowymi do zapisu danych (w bajtach) bardziej efektywnie.

Rozszerza OutputStreamklasę abstrakcyjną.

Działanie BufferedOutputStream

BufferedOutputStreamUtrzymuje wewnętrzny bufor 8192 bajtów .

Podczas operacji zapisu bajty są zapisywane w buforze wewnętrznym zamiast na dysku. Po zapełnieniu bufora lub zamknięciu strumienia cały bufor jest zapisywany na dysku.

W związku z tym zmniejsza się liczba komunikacji z dyskiem. Dlatego zapisywanie bajtów jest szybsze przy użyciu BufferedOutputStream.

Utwórz BufferedOutputStream

Aby utworzyć plik BufferedOutputStream, musimy najpierw zaimportować java.io.BufferedOutputStreampakiet. Po zaimportowaniu pakietu tutaj możemy utworzyć strumień wyjściowy.

 // Creates a FileOutputStream FileOutputStream file = new FileOutputStream(String path); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferOutputStream(file); 

W powyższym przykładzie utworzyliśmy BufferdOutputStreamnazwany bufor z FileOutputStreamnazwanym plikiem.

Tutaj bufor wewnętrzny ma domyślny rozmiar 8192 bajtów. Możemy jednak określić również rozmiar bufora wewnętrznego.

 // Creates a BufferedOutputStream with specified size internal buffer BufferedOutputStream buffer = new BufferOutputStream(file, int size); 

Bufor pomoże szybciej zapisywać bajty do plików.

Metody BufferedOutputStream

BufferedOutputStreamKlasa zapewnia implementacje dla różnych metod w OutputStreamklasie.

write () Metoda

  • write() - zapisuje pojedynczy bajt do wewnętrznego bufora strumienia wyjściowego
  • write(byte() array) - zapisuje bajty z określonej tablicy do strumienia wyjściowego
  • write(byte() arr, int start, int length) - zapisuje liczbę bajtów równą długości do strumienia wyjściowego z tablicy zaczynając od pozycji początkowej

Przykład: BufferedOutputStream, aby zapisać dane do pliku

 import java.io.FileOutputStream; import java.io.BufferedOutputStream; public class Main ( public static void main(String() args) ( String data = "This is a line of text inside the file"; try ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream("output.txt"); // Creates a BufferedOutputStream BufferedOutputStream output = new BufferedOutputStream(file); byte() array = data.getBytes(); // Writes data to the output stream output.write(array); output.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

W powyższym przykładzie utworzyliśmy buforowany strumień wyjściowy o nazwie output wraz z FileOutputStream. Strumień wyjściowy jest powiązany z plikiem output.txt .

 FileOutputStream file = new FileOutputStream("output.txt"); BufferedOutputStream output = new BufferedOutputStream(file); 

Aby zapisać dane do pliku, skorzystaliśmy z write()metody.

Tutaj, kiedy uruchamiamy program, plik output.txt jest wypełniony następującą treścią.

 This is a line of text inside the file. 

Uwaga : getBytes()Metoda użyta w programie konwertuje ciąg znaków na tablicę bajtów.

flush () Metoda

Aby wyczyścić bufor wewnętrzny, możemy użyć flush()metody. Ta metoda wymusza na strumieniu wyjściowym zapisanie wszystkich danych znajdujących się w buforze do pliku docelowego. Na przykład,

 import java.io.FileOutputStream; import java.io.BufferedOutputStream; public class Main ( public static void main(String() args) ( String data = "This is a demo of the flush method"; try ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream(" flush.txt"); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferedOutputStream(file); // Writes data to the output stream buffer.write(data.getBytes()); // Flushes data to the destination buffer.flush(); System.out.println("Data is flushed to the file."); buffer.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Wynik

 Dane są przesyłane do pliku. 

Kiedy uruchamiamy program, plik flush.txt jest wypełniany tekstem reprezentowanym przez dane ciągu.

close () Metoda

Aby zamknąć buforowany strumień wyjściowy, możemy użyć close()metody. Po wywołaniu metody nie możemy użyć strumienia wyjściowego do zapisania danych.

Aby dowiedzieć się więcej, odwiedź witrynę Java BufferedOutputStream (oficjalna dokumentacja języka Java).

Interesujące artykuły...