Как я могу преобразовать String
значение в InputStreamReader
?
281
ByteArrayInputStream также добивается цели :
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
Затем преобразуйте в читателя:
InputStreamReader reader = new InputStreamReader(is);
ByteArrayInputStream
: Since: JDK1.0 Нет ни малейшей причины предполагать, что этот класс «начиная с Java 1.4». Этот неправильный номер версии особенно странен, когда появилась Java 1.4,NIO
и нет смысла вводить API и его концептуальный преемник в одной и той же версии.Я также нашел
IOUtils
класс Apache Commons , так что:источник
new InputStreamReader(IOUtils.toInputStream(myString, "UTF-16"), "UTF-16")
будет без потерь.String
вbyte[]
массив, чтобы преобразовать байты обратно вchar
s тогда…Это должен быть конкретно InputStreamReader? Как насчет использования StringReader ?
В противном случае вы могли бы использовать StringBufferInputStream , но он устарел из-за проблем с преобразованием символов (вот почему вы должны предпочесть StringReader).
источник
Тот же вопрос, что и у @Dan - почему не StringReader?
Если это должен быть InputStreamReader, то:
источник
byte[] bytes = charset.getBytes();
Вы пытаетесь получить а)
Reader
функциональностьInputStreamReader
или б)InputStream
функциональностьInputStreamReader
? Вы не получите б).InputStreamReader
не являетсяInputStream
.Цель
InputStreamReader
состоит в том, чтобы взятьInputStream
- источник байтов - и декодировать байты в символы в форме aReader
. У вас уже есть данные в виде символов (исходная строка). Кодирование вашей String в байты и декодирование байтов обратно в символы будет избыточной операцией.Если вы пытаетесь получить
Reader
из своего источника, используйтеStringReader
.Если вы пытаетесь получить
InputStream
(который дает вам только байты), используйте Apache Commons,IOUtils.toInputStream(..)
как предложено другими ответами здесь.источник
Вы можете попробовать Cactoos :
Тогда, если вам нужно
Reader
:источник