W tym samouczku dowiemy się o Javie BufferedReader i jego metodach na przykładach.
BufferedReaderKlasa java.iopakietu może być używany z innymi czytelnikami, aby bardziej efektywnie odczytywać dane (w znakach).
Rozszerza klasę abstrakcyjną Reader.

Działanie BufferedReader
BufferedReaderUtrzymuje wewnętrzny bufor 8192 znaków .
Podczas operacji odczytu w BufferedReader, fragment znaków jest odczytywany z dysku i zapisywany w buforze wewnętrznym. A z wewnętrznego bufora znaki są odczytywane indywidualnie.
W związku z tym zmniejsza się liczba komunikacji z dyskiem. Dlatego czytanie znaków jest szybsze przy użyciu BufferedReader.
Utwórz BufferedReader
Aby utworzyć plik BufferedReader, musimy najpierw zaimportować java.io.BuferedReaderpakiet. Po zaimportowaniu pakietu, oto jak możemy stworzyć czytnik.
// Creates a FileReader FileReader file = new FileReader(String file); // Creates a BufferedReader BufferedReader buffer = new BufferedReader(file);
W powyższym przykładzie utworzyliśmy BufferedReadernazwany bufor z FileReadernazwanym plikiem.
W tym przypadku bufor wewnętrzny BufferedReaderma domyślny rozmiar 8192 znaków. Możemy jednak określić również rozmiar bufora wewnętrznego.
// Creates a BufferdReader with specified size internal buffer BufferedReader buffer = new BufferedReader(file, int size);
Bufor pomoże szybciej odczytać znaki z plików.
Metody BufferedReader
BufferedReaderKlasa zawiera implementacje dla różnych obecnych metod Reader.
read () Metoda
read()- odczytuje pojedynczy znak z wewnętrznego bufora czytnikaread(char() array)- odczytuje znaki z czytnika i przechowuje w określonej tablicyread(char() array, int start, int length)- odczytuje liczbę znaków równą długości z czytnika i zapisuje w określonej tablicy zaczynając od pozycji początkowej
Na przykład 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ą BufferedReader.
import java.io.FileReader; import java.io.BufferedReader; class Main ( public static void main(String() args) ( // Creates an array of character char() array = new char(100); try ( // Creates a FileReader FileReader file = new FileReader("input.txt"); // Creates a BufferedReader BufferedReader input = new BufferedReader(file); // Reads characters input.read(array); System.out.println("Data in the file: "); System.out.println(array); // Closes the reader input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) )
Wynik
Dane w pliku: jest to wiersz tekstu w pliku.
W powyższym przykładzie utworzyliśmy buforowany czytnik o nazwie input. Buforowany czytnik jest powiązany z plikiem input.txt .
FileReader file = new FileReader("input.txt"); BufferedReader input = new BufferedReader(file);
Tutaj użyliśmy tej read()metody do odczytania tablicy znaków z wewnętrznego bufora buforowanego czytnika.
skip () Metoda
Aby odrzucić i pominąć określoną liczbę znaków, możemy użyć skip()metody. Na przykład,
import java.io.FileReader; import java.io.BufferedReader; public class Main ( public static void main(String args()) ( // Creates an array of characters char() array = new char(100); try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileReader file = new FileReader("input.txt"); // Creates a BufferedReader BufferedReader input = new BufferedReader(file); // Skips the 5 characters input.skip(5); // Reads the characters input.read(array); System.out.println("Data after skipping 5 characters:"); System.out.println(array); // closes the reader input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Wynik
Dane po pominięciu 5 znaków: to linia tekstu w pliku.
W powyższym przykładzie użyliśmy skip()metody do pominięcia 5 znaków z czytnika plików. Stąd znaki 'T', 'h', 'i', 's'i ' 'są pomijane z oryginalnego pliku.
close () Metoda
Aby zamknąć buforowany czytnik, możemy użyć close()metody. Po close()wywołaniu metody nie możemy użyć czytnika do odczytu danych.
Inne metody BufferedReader
| metoda | Opis |
|---|---|
ready() | sprawdza, czy czytnik plików jest gotowy do odczytu |
mark() | zaznacz pozycję w czytniku, do której odczytano dane |
reset() | zwraca kontrolkę do punktu w czytniku, w którym ustawiono znacznik |
Aby dowiedzieć się więcej, odwiedź stronę Java BufferedReader (oficjalna dokumentacja Java).








