Как мне превратить строку в InputStreamReader в Java?
Вопрос
Как я могу преобразовать значение String
в InputStreamReader
?
Решение
ByteArrayInputStream также помогает: р>
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
Другие советы
Я также обнаружил класс apache commons IOUtils
, поэтому:
InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
Должен ли это быть именно InputStreamReader? Как насчет использования StringReader ?
В противном случае вы можете использовать StringBufferInputStream , но это устарело из-за проблем с преобразованием символов (именно поэтому вы должны предпочесть StringReader).
Тот же вопрос, что и @Dan - почему не StringReader?
Если это должен быть InputStreamReader, тогда:
String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);
Вы пытаетесь получить а) функциональность Reader
из InputStreamReader
или b) функциональность InputStream
из InputStreamReader код>? Вы не получите б).
InputStreamReader
не является InputStream
.
Цель InputStreamReader
- взять InputStream
- источник байтов - и декодировать байты в символы в виде Reader
. У вас уже есть данные в виде символов (ваша исходная строка). Кодирование вашей String в байты и декодирование байтов обратно в символы будет избыточной операцией.
Если вы пытаетесь получить Reader
из своего источника, используйте StringReader
.
Если вы пытаетесь получить InputStream
(который дает вам только байты), используйте apache commons IOUtils.toInputStream (..)
, как предлагается другими ответами здесь. р>
Вы можете попробовать Cactoos :
InputStream stream = new InputStreamOf(str);
Тогда, если вам нужен Reader
:
Reader reader = new ReaderOf(stream);