Вопрос Java душный вопрос

Начинающий
Статус
Оффлайн
Регистрация
6 Окт 2023
Сообщения
8
Реакции[?]
0
Поинты[?]
0
Почему println()/print() класса PrintStream (реализация OutputStream aka байтовый поток) записывает символы/строки в консоль посимвольно,
А read() класса BufferedInputStream (реализация InputStream aka байтовый поток) возвращает символы/строки побайтово?
У меня нет вопросов к BufferedInputStream, у меня вопросы к PrintStream (либо я че-то не понял)
Ведь если ты не хочешь, чтобы read() возвращал строки по байтам, ты используешь InputStreamReader (реализация Reader aka символьный поток), который делает тоже самое, что и BufferedInputStream, но посимвольно
А какой смысл тогда от голого OutputSteamWriter (реализация Writer aka символьный поток), если PrintStream делает по сути тоже самое?
Если бы методы PrintStream записывали символы по байтам, как и подобает классу, реализующий байтовый поток, я бы понял логику, но мало того что в этом нет логики, так теперь я не вижу логики в классе OutputSteamWriter
 
Участник
Статус
Оффлайн
Регистрация
23 Апр 2022
Сообщения
695
Реакции[?]
327
Поинты[?]
11K
Почему println()/print() класса PrintStream (реализация OutputStream aka байтовый поток) записывает символы/строки в консоль посимвольно,
А read() класса BufferedInputStream (реализация InputStream aka байтовый поток) возвращает символы/строки побайтово?
У меня нет вопросов к BufferedInputStream, у меня вопросы к PrintStream (либо я че-то не понял)
Ведь если ты не хочешь, чтобы read() возвращал строки по байтам, ты используешь InputStreamReader (реализация Reader aka символьный поток), который делает тоже самое, что и BufferedInputStream, но посимвольно
А какой смысл тогда от голого OutputSteamWriter (реализация Writer aka символьный поток), если PrintStream делает по сути тоже самое?
Если бы методы PrintStream записывали символы по байтам, как и подобает классу, реализующий байтовый поток, я бы понял логику, но мало того что в этом нет логики, так теперь я не вижу логики в классе OutputSteamWriter
Fck java , but... Возможно причина в том что тебе дают юзерфрендли обёртку которая предоставляет удобные методы для вывода формат. текста?Плюс к этому тебе не приходится ебаться с тем как интрепретировать те или инные байты, всё делается за тебя.


P.S Создатели столь крутого языка "Java" прекрасно понимали что целевая аудитория - раздел "Создание читов для Minecraft" и чтобы облегчить ваше бытие, дали вам высокий уровень абстракции :roflanBuldiga:
 
Начинающий
Статус
Оффлайн
Регистрация
6 Окт 2023
Сообщения
8
Реакции[?]
0
Поинты[?]
0
Причина другая, я догадался
println(read()) возвращает в консоль 1 элемент из массива
println() предоставляет консоли весь массив

Если консоль вместо байтового массива получает другой объект, он преобразуется в строку
Если консоль получает байтовый массив, данные этого массива преобразуются в символы и потом преобразуются в строку
Поэтому все сходится
 
Сверху Снизу