Получить доступ

Какая пара классов преобразует байтовые потоки в символьные и обратно?

JuniorВвод-вывод и NIO
Коротко

InputStreamReader декодирует байты в символы, OutputStreamWriter кодирует символы в байты. Кодировку указывают явно: new InputStreamReader(in, StandardCharsets.UTF_8).

  • Без кодировки — зависимость от окружения (до Java 18)
  • Это адаптеры: байтовый интерфейс в символьный
  • Поверх — BufferedReader для readLine

А ещё Для файлов проще Files.newBufferedReader(path, UTF_8)

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Важно явно указывать Charset, иначе кодировка по умолчанию окружения может дать разные результаты на разных машинах.

Что хотят услышать

  • Название классов.
  • Явная кодировка.

Частые ошибки

  • Путать буферизацию с преобразованием кодировки.
  • Не указывать charset при чтении текста.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓InputStreamReader и OutputStreamWriter
  • ✗BufferedInputStream и BufferedOutputStream
  • ✗DataInputStream и DataOutputStream
  • ✗File и Path

Что спросят дальше

  • Чем Reader отличается от InputStream?
  • Зачем нужен BufferedReader?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем