Назад к вопросам
Middle
7
Что за паттерн реализован в цепочке FileInputStream → BufferedInputStream → InputStreamReader → BufferedReader?
Компании, где спрашивали
экзон
Ответ от нейросети
sobes.tech AI
В цепочке FileInputStream → BufferedInputStream → InputStreamReader → BufferedReader реализован паттерн "Декоратор" (Decorator). Этот паттерн позволяет динамически добавлять объектам новые обязанности, оборачивая их в другие объекты-обертки.
Здесь каждый класс расширяет функциональность предыдущего:
- FileInputStream — базовый поток для чтения байтов из файла.
- BufferedInputStream — добавляет буферизацию для повышения производительности чтения байтов.
- InputStreamReader — преобразует байтовый поток в символьный поток, используя кодировку.
- BufferedReader — добавляет буферизацию для эффективного чтения символов, строк.
Таким образом, каждый следующий поток оборачивает предыдущий, добавляя новые возможности, не меняя интерфейс. Это позволяет гибко комбинировать функциональность потоков ввода.
Пример:
FileInputStream fis = new FileInputStream("file.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
InputStreamReader isr = new InputStreamReader(bis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line = br.readLine();
Здесь BufferedReader позволяет читать строки, а BufferedInputStream улучшает производительность чтения байтов из файла.