Как превратить строку в InputStreamReader в java?
Как я могу преобразовать a String
стоимостью в InputStreamReader
?
6 ответов
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
? Вы не получите b). InputStreamReader
не InputStream
.
цель InputStreamReader
на InputStream
- источник байтов-и декодируйте байты в символы в виде Reader
. У вас уже есть данные в виде символов (исходная строка). Кодирование строки в байты и декодирование байтов обратно в символы будет избыточным операция.
если вы пытаетесь получить Reader
из вашего источника, используйте StringReader
.
если вы пытаетесь получить InputStream
(что дает вам только байты), используйте Apache commons IOUtils.toInputStream(..)
как предложено другими ответами здесь.
вы можете попробовать Cactoos:
InputStream stream = new InputStreamOf(str);
тогда, если вам нужно Reader
:
Reader reader = new ReaderOf(stream);