JavaRush /Курсы /Java Core /BufferedReader/InputStreamReader

BufferedReader/InputStreamReader

Java Core
9 уровень , 6 лекция
Открыта

— Привет, Амиго! Ты уже давно пользуешься классами BufferedReader и InputStreamReader. Теперь давай разберемся, что же они делают.

Класс InputStreamReader является классическим адаптером от интерфейса InputStream к интерфейсу Reader. Тут даже и добавить нечего.

Но вкратце, происходит вот что. Когда ты запрашиваешь (читаешь посредством read) у объекта типа InputStreamReader очередной символ, он читает из переданного ему в конструктор InputStream-а несколько байт и возвращает их как один char.

Но Reader – не самый удобный объект для работы. Нам часто нужно прочитать не все введенные пользователем символы за один раз, а разбить эти символы на строки.

— Но у класса Reader ведь есть метод read(CharBuffer s), разве мы не можем использовать его?

— Этот метод читает данные куском, размер которого равен размеру буфера и помещает их в объект CharBuffer.

Текст обычно делится на строки (линии, line — строка по-английски). Поэтому метод read(CharBuffer s) может прочитать несколько «линий» за один раз. Если же нам нужно прочитать текст именно до конца «линии» (т.е. все символы строки до enter), для этого лучше поискать что-нибудь еще. И такой метод есть. В классе BufferedReader.

Класс BufferedReader, являющийся удобной надстройкой над Reader, имеет один очень удобный метод: readLine(). Этот метод позволяет читать из Reader-а сразу целыми строками (т.е. линиями). Когда ты в своем коде вызываешь метод readLine, он читает из объекта Reader символы, пока не встретится enter. Как только enter встретится, метод склеит символы в одну строку и вернет ее.

— Я этим постоянно пользовался, только не знал как все это работает. Теперь знаю. Спасибо, Ким.

Комментарии (166)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #3585174 Уровень 33
10 сентября 2025
Like
Артём Сёмкин Уровень 47
13 января 2025
Денис Кокшаров Уровень 1
17 марта 2025
спасибо, Ким))
rockentrav Уровень 34
26 декабря 2024
{Java_Shark} Уровень 36
11 декабря 2024
++
Денис Кокшаров Уровень 1
17 марта 2025
++Java_Shark
марин Уровень 4
29 августа 2024
у меня не открывается ссылка - белое поле
Long_byte Уровень 55
23 марта 2024
теперь я чуток понял эту строчку кода BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)) BufferedReader является оберткой для InputStreamReader а InputStreamReader является адаптером между InputStream и Reader то есть InputStream преобразует в Reader
Владислав Уровень 11 Expert
22 марта 2024
А где статья? Тут черные символы на черном фоне?
YUREC Уровень 36
10 марта 2024
"Ты уже давно пользуешься классами BufferedReader и InputStreamReader. Теперь давай разберемся, что же они делают." Как можно давно пользоваться и не понимать что они делают ?
kaidzualex Уровень 5 Expert
11 июня 2024
Ну вот так тут половина учащихся живет, судя по фидбэку в комментариях. Но авторы тонко юморят над собственным курсом. Просто половина учащихся разобралась посредством сторонних ресурсов что к чему, а другая половина так и не дошла до полного понимания вопроса. А сколько людей сломались на уровне с I/O в Syntax Pro...
SomeBody098 Уровень 51
25 июня 2024
да да, верно подметил 😉
Максим Li Уровень 2
15 января 2024
Good!
Денис220 Уровень 30
20 декабря 2023
Сейчас бы на 29 уровне прочитать, чем постоянно пользовался)