Как превратить строку в InputStreamReader в java?



Как я могу преобразовать a String стоимостью в InputStreamReader?

577   6  

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);

вы пытаетесь получить a)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);

Comments

    Ничего не найдено.