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 commonsIOUtils.toInputStream(..)как предлагают другие ответы здесь.
вы можете попробовать Cactoos:
InputStream stream = new InputStreamOf(str);тогда, если вам нужно
Reader:Reader reader = new ReaderOf(stream);
Comments