Klasa BufferedReader w języku Java odczytuje tekst ze strumienia symboli, buforuje symbole w celu wydajnego odczytywania znaków, tablic i ciągów. Konstruktorowi można przekazać rozmiar bufora jako drugi argument.
Konstruktory:
![BufferedReader i BufferedWriter w Java - 2]()

BufferedReader(Reader in) // Tworzy buforowany strumień do odczytu symboli. Wykorzystuje domyślny rozmiar bufora.
BufferedReader(Reader in, int sz) // Tworzy buforowany strumień do odczytu symboli. Wykorzystuje określony rozmiar bufora.
Metody:
close() // Zamknij strumień
mark(int readAheadLimit) // Zaznacz pozycję w strumieniu
markSupported() // Wskaż, czy znakowanie strumienia jest obsługiwane
int read() // Odczyt bufora
int read(char[] cbuf, int off, int len) // Odczyt bufora
String readLine() // Następna linia
boolean ready() // Czy strumień jest gotowy do odczytu?
reset() // Resetuj strumień
skip(long n) // Pomiń znaki
Oto przykład użycia klas Java BufferedReader i BufferedWriter:
Wczytywanie pliku:
import java.io.*;
public class ReadFile {
public static void main(String[] args) {
try {
File file = new File("file.txt");
FileReader fileReader = new FileReader(file); // Java FileReader to strumień, który łączy się z plikiem tekstowym, umożliwiając czytanie z pliku w języku Java
BufferedReader bufferedReader = new BufferedReader(fileReader); // Połącz FileReader z BufferedReader
String line;
while((line = bufferedReader.readLine()) != null) {
System.out.println(line); // Wyświetl zawartość pliku na ekranie, po jednym wierszu na raz
}
bufferedReader.close(); // Zamknij strumień
} catch (Exception e) {
e.printStackTrace();
}
}
}
Klasa BufferedWriter języka Java zapisuje tekst w wyjściowym strumieniu znaków, buforuje je w celu wydajnego zapisu znaków, tablic i ciągów. Konstruktorowi można przekazać rozmiar bufora jako drugi argument.
Konstruktory:
BufferedWriter(Writer out) // Utwórz buforowany strumień znaków wyjściowych, który wykorzystuje domyślny rozmiar bufora.
BufferedWriter(Writer out, int sz) // Tworzy buforowany strumień znaków wyjściowych, który wykorzystuje domyślny rozmiar bufora.
Metody:
close() // Zamknij strumień
flush() // Wyślij dane z bufora do modułu Writer
newLine() // Przejdź do nowej linii
write(char[] cbuf, int off, int len) // Zapisywanie do bufora
write(int c) // Zapisywanie do bufora
write(String s, int off, int len) // Zapisywanie do bufora
Oto przykład użycia klas języka Java BufferedReader i BufferedWriter:
Zapisywanie do pliku:
import java.io.*;
public class WriteFile {
public static void main(String[] args) {
String[] list = {"one", "two", "three", "fo"};
try {
File file = new File("file.txt");
FileWriter fileReader = new FileWriter(file); // Strumień, który łączy się z plikiem tekstowym
BufferedWriter bufferedWriter = new BufferedWriter(fileReader); // Połącz FileWriter z BufferedWriter
for (String s : list) {
bufferedWriter.write(s + "\n");
}
bufferedWriter.close (); // Zamknij strumień
} catch (Exception e) {
e.printStackTrace();
}
}
}
FileWriter natychmiast zapisuje dane na dysku. Za każdym razem, gdy uzyskujemy do niego dostęp, opakowujący go bufor przyspiesza naszą aplikację. Bufor zapisze dane wewnętrznie, a następnie zapisze duże fragmenty plików na dysku.
Odczytujemy dane z konsoli i zapisujemy je do pliku:
import java.io.*;
class ConsoleRead {
public static void main(String[] args) {
try {
File file = new File("file.txt");
InputStreamReader inputStreamReader = new InputStreamReader(System.in); // Strumień do odczytu z konsoli
BufferedReader bufferedReader = new BufferedReader(inputStreamReader); // Połącz InputStreamReader z BufferedReader
FileWriter fileReader = new FileWriter(file); // Strumień, który łączy się z plikiem tekstowym
BufferedWriter bufferedWriter = new BufferedWriter(fileReader); // Połącz FileWriter z BufferedWriter
String line;
while(!(line = bufferedReader.readLine()).equals("exit")) {
bufferedWriter.write(line);
}
bufferedReader.close(); // Zamknij strumień
bufferedWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ten artykuł przeczytasz także po angielsku. |
---|
Read the English version of this article to better understand Java’s BufferedReader and BufferedWriter classes. Find out why and how they use buffering to your advantage. |

GO TO FULL VERSION