CodeGym
Poziom 41
Hamburg

BufferedReader i BufferedWriter w Java

Opublikowano w grupie Poland
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. BufferedReader i BufferedWriter - 2Konstruktory:

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.
BufferedReader i BufferedWriter w Java - 2
Komentarze (1)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Marek Pasierbek Poziom 9, Poznań, Poland
8 grudnia 2020
dobra robota / good job