W tym samouczku dowiemy się o Javie BufferedOutputStream i jego metodach na przykładach.
BufferedOutputStream
Klasa java.io
pakietu jest używany z innymi strumieniami wyjściowymi do zapisu danych (w bajtach) bardziej efektywnie.
Rozszerza OutputStream
klasę abstrakcyjną.
Działanie BufferedOutputStream
BufferedOutputStream
Utrzymuje 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.BufferedOutputStream
pakiet. 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 BufferdOutputStream
nazwany bufor z FileOutputStream
nazwanym 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
BufferedOutputStream
Klasa zapewnia implementacje dla różnych metod w OutputStream
klasie.
write () Metoda
write()
- zapisuje pojedynczy bajt do wewnętrznego bufora strumienia wyjściowegowrite(byte() array)
- zapisuje bajty z określonej tablicy do strumienia wyjściowegowrite(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).