Как превратить String в InputStreamReader в java?

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

Ответ 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);