Как мне превратить строку в InputStreamReader в Java? - PullRequest
270 голосов
/ 29 октября 2008

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

Ответы [ 6 ]

320 голосов
/ 29 октября 2008

ByteArrayInputStream также добивается цели:

InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
61 голосов
/ 29 октября 2008

Я также нашел класс Apache Commons IOUtils, поэтому:

InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
32 голосов
/ 29 октября 2008

Должно ли это быть конкретно InputStreamReader? Как насчет использования StringReader ?

В противном случае вы могли бы использовать StringBufferInputStream , но это устарело из-за проблем с преобразованием символов (именно поэтому вы должны предпочесть StringReader).

16 голосов
/ 29 октября 2008

Тот же вопрос, что и у @ Dan - почему бы не StringReader?

Если это должен быть InputStreamReader, то:

String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);
3 голосов
/ 12 января 2015

Вы пытаетесь получить а) Reader функциональность из InputStreamReader или б) InputStream функциональность из InputStreamReader? Вы не получите б). InputStreamReader не является InputStream.

Цель InputStreamReader - взять InputStream - источник байтов - и декодировать байты в символы в виде Reader. У вас уже есть данные в виде символов (ваша исходная строка). Кодирование вашей строки в байты и декодирование байтов обратно в символы будет избыточной операцией.

Если вы пытаетесь получить Reader из своего источника, используйте StringReader.

Если вы пытаетесь получить InputStream (который дает вам только байты), используйте Apache Commons IOUtils.toInputStream(..), как указано в других ответах здесь.

2 голосов
/ 27 августа 2017

Вы можете попробовать Cactoos :

InputStream stream = new InputStreamOf(str);

Тогда, если вам нужно Reader:

Reader reader = new ReaderOf(stream);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...