Как превратить строку в 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);