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 подскажет развёрнутый ответ в реальном времени.