Mediumio
Чем BufferedReader/Writer отличаются от обычных?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
BufferedReader/Writer — обёртки над Reader/Writer с внутренним буфером (default 8KB). Меньше системных вызовов, выше производительность. Без буфера каждый read() = системный вызов.
// Чтение по строкам
try (BufferedReader br = Files.newBufferedReader(Path.of("f.txt"))) {
String line;
while ((line = br.readLine()) != null) {
process(line);
}
}
// PrintWriter — formatting, не бросает checked exceptions
PrintWriter pw = new PrintWriter("out.txt");
pw.printf("%s = %d%n", "count", 42);
if (pw.checkError()) { /* проверка ошибок */ }- BufferedReader/Writer — для текста; BufferedInputStream/OutputStream — для binary;
InputStreamReader/OutputStreamWriter— мост между byte и char с charset;Files.newBufferedReader/Writer— фабрики с UTF-8 default;- Для очень больших файлов — memory-mapped (
FileChannel).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.