JavaRush /Java блог /Random UA /BufferedReader і BufferedWriter
Автор
John Selawsky
Senior Java-разработчик и преподаватель в LearningTree

BufferedReader і BufferedWriter

Стаття з групи Random UA
Java клас BufferedReader читає текст із потоку введення символів, буферизуючи прочитані символи, щоб забезпечити ефективне зчитування символів, масивів та рядків. Можна вказати у конструкторі другим параметром розмір буфера.
BufferedReader та BufferedWriter - 1
Конструктори:
BufferedReader(Reader in) // Створює буферний потік символів, який використовує розмір буфера за замовчуванням.
BufferedReader(Reader in, int sz) // Створює буферний потік уведення символів, який використовує вказаний розмір.
Методи:
close() // Закрити потік
mark(int readAheadLimit) // Відзначити позицію в потоці
markSupported() // Чи підтримує позначку потоку
int read() // прочитати буфер
int read(char[] cbuf, int off, int len) // прочитати буфер
String readLine() // Наступний рядок
boolean ready() // Чи може потік читати
reset() // скинути потік
skip(long n) // пропустити символи
Приклад використання класів BufferedReader та BufferedWriter: Читання файлу:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderExample {

	public static void main(String[] args) {
		String inputFileName = "file.txt";

		try (BufferedReader reader = new BufferedReader(new FileReader(inputFileName))) {
			String line;
			while ((line = reader.readLine()) != null) {
				System.out.println(line + "\n");
			}
		}
                catch (IOException e) {
			e.printStackTrace();
		}
	}

}
Java клас BufferedWriter записує текст у потік виведення символів, буферизуючи записані символи, щоб забезпечити ефективний запис символів, масивів та рядків. Можна вказати у конструкторі другим параметром розмір буфера. Конструктори:
BufferedWriter(Writer out) // Створює буферний потік виведення символів, який використовує розмір за замовчуванням буфера.
BufferedWriter(Writer out, int sz) // Створює буферний потік виведення символів, який використовує вказаний розмір.
Методи:
close() // Закрити потік
flush() // Передати дані з буфера в Writer
newLine() // Перенесення на новий рядок
write(char[] cbuf, int off, int len) // запис у буфер
write(int c) // запис у буфер
write(String s, int off, int len) // запис у буфер
Приклад використання класів Java BufferedReader та BufferedWriter: Запис у файл
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class FileWritterExample {

	public static void main(String[] args) {
		String outputFileName = "file.txt";
		String[] array = { "one", "two", "three", "four" };

		try (BufferedWriter writter = new BufferedWriter(new FileWriter(outputFileName))) {
			for (String value : array) {
				writter.write(value + "\n");
			}
		}
        catch (IOException e) {
			e.printStackTrace();
		}
	}

}
FileWriterвідразу записує дані на диск і щоразу до нього звертається, буфер працює як обгортка та прискорює роботу програми. Буфер записуватиме дані в себе, а потім великим шматком файли на диск. Зчитуємо дані з консолі та записуємо у файл:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class ConsoleReaderExample {

	public static void main(String[] args) {
		String outputFileName = "file.txt";

		try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
			try (BufferedWriter writter = new BufferedWriter(new FileWriter(outputFileName))) {
				String line;
				while (!(line = reader.readLine()).equals("exit")) { // Переривання циклу під час написання рядка exit
					writter.write(line);
				}
			}
		}
         catch (IOException e) {
			e.printStackTrace();
		}
	}

}
Коментарі (1)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Sava_crosava Рівень 23
26 жовтня 2023
Закликаю робити актив під статтями українською мовою!!! Підозрюю що статті перекладаються в два кліка через перекладач( Але якщо це буде мати попит та відгук від української спільноти, таких статтей буде більше і скоро буде більше оригінальних статтей українською)🤟