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