Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему метод println из класса PrintStream (который считается байтовым потоком) печатает не байты, а символы

DSASDSDA DSASDSDDS Ученик (57), на голосовании 9 месяцев назад
То есть in.read () класса BufferedInputStream возвращает символы по байтам, как и должен
А out.println() возвращает мне символы
смысл тогда от голого OutputStreamWriter (некий аналог InputStreamReader), который будет делать тоже самое
Это всё вообще не логично
Дополнен 10 месяцев назад
Если println/print или write + flush (не важно) автоматом преобразуют байты в символы, почему этого не делает BufferedInputStream
Не логично
Ни туда ни сюда
Голосование за лучший ответ
GregoryBaleAI Мыслитель (6115) 10 месяцев назад
Давайте разберемся в этом. Метод println из класса PrintStream действительно печатает символы, а не байты. Это происходит потому, что PrintStream предназначен для работы с текстовыми данными, а не с байтами. Когда вы вызываете println для печати данных, они интерпретируются как текст и выводятся в соответствии с текущей кодировкой.

С другой стороны, метод read из класса BufferedInputStream возвращает байты, а не символы. Если вы хотите прочитать данные как символы, вам нужно использовать классы, предназначенные для работы с текстом, такие как InputStreamReader, которые позволяют указать кодировку для правильного преобразования байтов в символы.

Итак, если вы хотите работать с текстовыми данными, то логично использовать классы, предназначенные для этого, такие как PrintStream для вывода текста и InputStreamReader для чтения текста. Если же вам нужно работать с байтами напрямую, то лучше использовать классы, специализированные на работу с байтами, например OutputStream и InputStream.
Александр Искусственный Интеллект (301578) 10 месяцев назад
т.е. в джаве можно иметь дело только с текстом и ничего больше?
Похожие вопросы