W tym samouczku dowiemy się o języku Java BufferedInputStream i jego metodach za pomocą przykładów.
BufferedInputStreamKlasa java.iopakietu jest używany z innymi strumieniami wejściowymi do bardziej efektywnego odczytu danych (w bajtach).
Rozszerza InputStreamklasę abstrakcyjną.

Działanie BufferedInputStream
BufferedInputStreamUtrzymuje wewnętrzny bufor 8192 bajtów .
Podczas operacji odczytu w BufferedInputStream, porcja bajtów jest odczytywana z dysku i zapisywana w buforze wewnętrznym. A bajty z bufora wewnętrznego odczytywane są indywidualnie.
W związku z tym zmniejsza się liczba komunikacji z dyskiem. Dlatego czytanie bajtów jest szybsze przy użyciu BufferedInputStream.
Utwórz BufferedInputStream
Aby utworzyć plik BufferedInputStream, musimy najpierw zaimportować java.io.BufferedInputStreampakiet. Po zaimportowaniu pakietu tutaj, możemy utworzyć strumień wejściowy.
// Creates a FileInputStream FileInputStream file = new FileInputStream(String path); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferInputStream(file);
W powyższym przykładzie utworzyliśmy BufferdInputStreamnazwany bufor z FileInputStreamnazwanym 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 BufferedInputStream with specified size internal buffer BufferedInputStream buffer = new BufferInputStream(file, int size);
Bufor pomoże szybciej odczytać bajty z plików.
Metody BufferedInputStream
BufferedInputStreamKlasa zawiera implementacje dla różnych sposobów przedstawienia w InputStreamklasie.
read () Metoda
read()- czyta pojedynczy bajt ze strumienia wejściowegoread(byte() arr)- odczytuje bajty ze strumienia i przechowuje w określonej tablicyread(byte() arr, int start, int length)- odczytuje liczbę bajtów równą długości ze strumienia i zapisuje w określonej tablicy zaczynając od pozycji początkowej
Załóżmy, że mamy plik o nazwie input.txt z następującą zawartością.
This is a line of text inside the file.
Spróbujmy odczytać plik za pomocą BufferedInputStream.
import java.io.BufferedInputStream; import java.io.FileInputStream; class Main ( public static void main(String() args) ( try ( // Creates a FileInputStream FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream input = new BufferedInputStream(file); // Reads first byte from file int i = input .read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the file i = input.read(); ) input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Wynik
To jest wiersz tekstu w pliku.
W powyższym przykładzie utworzyliśmy buforowany strumień wejściowy o nazwie buffer wraz z FileInputStream. Strumień wejściowy jest powiązany z plikiem input.txt .
FileInputStream file = new FileInputStream("input.txt"); BufferedInputStream buffer = new BufferedInputStream(file);
Tutaj użyliśmy tej read()metody do odczytania tablicy bajtów z wewnętrznego bufora buforowanego czytnika.
dostępne () Metoda
Aby uzyskać liczbę dostępnych bajtów w strumieniu wejściowym, możemy użyć available()metody. Na przykład,
import java.io.FileInputStream; import java.io.BufferedInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + buffer.available()); // Reads bytes from the file buffer.read(); buffer.read(); buffer.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + buffer.available()); buffer.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Wynik
Liczba dostępnych bajtów na początku: 39 Liczba dostępnych bajtów na końcu: 36
W powyższym przykładzie
- Najpierw używamy tej
available()metody, aby sprawdzić liczbę dostępnych bajtów w strumieniu wejściowym. - Następnie użyliśmy tej
read()metody 3 razy, aby odczytać 3 bajty ze strumienia wejściowego. - Teraz po odczytaniu bajtów ponownie sprawdziliśmy dostępne bajty. Tym razem dostępne bajty zmniejszyły się o 3.
skip () Metoda
Aby odrzucić i pominąć określoną liczbę bajtów, możemy użyć skip()metody. Na przykład,
import java.io.FileInputStream; import java.io.BufferedInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Skips the 5 bytes buffer.skip(5); System.out.println("Input stream after skipping 5 bytes:"); // Reads the first byte from input stream int i = buffer.read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the input stream i = buffer.read(); ) // Closes the input stream buffer.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Wynik
Strumień wejściowy po pominięciu 5 bajtów: to linia tekstu wewnątrz pliku.
W powyższym przykładzie użyliśmy skip()metody do pominięcia 5 bajtów ze strumienia wejściowego pliku. W związku z tym, gdy bajty 'T', 'h', 'i', 's'i ' 'są pomijane ze strumienia wejściowego.
close () Metoda
Aby zamknąć buforowany strumień wejściowy, możemy użyć close()metody. Po close()wywołaniu metody nie możemy użyć strumienia wejściowego do odczytu danych.
Inne metody BufferedInputStream
| Metody | Opisy |
|---|---|
mark() | zaznacz pozycję w strumieniu wejściowym, do której zostały odczytane dane |
reset() | zwraca formant do punktu w strumieniu wejściowym, w którym ustawiono znacznik |
Aby dowiedzieć się więcej, odwiedź stronę Java BufferdInputStream (oficjalna dokumentacja Java).








