Как прочитать InputStream в строку?
Часто строковые данные попадают в приложение в виде потока, например, так читаются текстовые файлы, данные получаемые из сети, через сокет или ввод информации пользователем на клавиатуре. Поэтому удобнее обрабатывать их также в потоке.
Обычно это делается в такой последовательности: заводится символьный массив, который выполняет роль буфера, входящий поток записывается в этот массив, по мере заполнения буфера данные из него переходят в хвост строки.
Можно использовать класс Scaner, который читает из буфера подстроки, разделённые установленным символом. Например, при чтении всей строки можно задать символ конца строки – «\\а». Преимущества этой реализации – простота, недостатки: заданный наперёд и ограниченный размер буфера, низкая производительность.
Рекомендуемое решение: читать данные в буфер с помощью метода InputStream.read, или обернуть поток в InputStreamReader. Из буфера данные переносятся в строку через ByteArrayOutputStream, можно также использовать StringBuilder. Готовая реализация есть в библиотеках Apache Commons IO и Google Guava. Код можно взять со stackoverflow.
На собеседовании такая задача может возникнуть как часть задачи на вывод или ввод данных с консоли. Поэтому, рекомендуется подготовить шпаргалку с исходным кодом.
Учитесь как в игре
AI Sprints — обучение профессиям с ИИ
Уровни, XP, достижения и рейтинги. Увидите прогресс каждый день — мотивация не пропадает даже через месяцы обучения
- Геймификация: уровни, опыт, достижения — как в игре, но навыки реальные
- Карта навыков: визуальный прогресс по каждой технологии — видите, что освоили
- Рейтинги: сравнивайте себя с другими студентами — здоровая конкуренция
AI Challenge — собери чат-бота за 5 дней
Бесплатный марафон по AI-инжинирингу. Cursor + OpenAI, 60 минут в день — без опыта в программировании. К пятнице у вас будет рабочий чат-бот с памятью в браузере.
- Практика с первого дня, без теории «в стол»
- Готовый проект в портфолио к концу недели
- Старт в любой день — учитесь в своём темпе