¿Cómo puedo transformar un String
valor en un InputStreamReader
?
281
ByteArrayInputStream también hace el truco:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
Luego convertir a lector:
InputStreamReader reader = new InputStreamReader(is);
ByteArrayInputStream
: Desde: JDK1.0 No hay la menor razón para suponer que esta clase es "desde Java 1.4". Ese número de versión incorrecto es especialmente extraño cuando se introdujo Java 1.4NIO
y tiene poco sentido introducir una API y su sucesor conceptual dentro de la misma versión.También encontré la
IOUtils
clase apache commons , entonces:fuente
new InputStreamReader(IOUtils.toInputStream(myString, "UTF-16"), "UTF-16")
Sería sin pérdidas.String
en unabyte[]
matriz para convertir los bytes de nuevo achar
s entonces ...¿Tiene que ser específicamente un InputStreamReader? ¿Qué hay de usar StringReader ?
De lo contrario, podría usar StringBufferInputStream , pero está en desuso debido a problemas de conversión de caracteres (por lo que debería preferir StringReader).
fuente
La misma pregunta que @Dan : ¿por qué no StringReader?
Si tiene que ser InputStreamReader, entonces:
fuente
byte[] bytes = charset.getBytes();
¿Está tratando de obtener a) la
Reader
funcionalidad deInputStreamReader
ob) laInputStream
funcionalidad deInputStreamReader
? No obtendrás b).InputStreamReader
no es unaInputStream
.El propósito de
InputStreamReader
es tomarInputStream
una fuente de bytes y decodificar los bytes en caracteres en forma de aReader
. Ya tiene sus datos como caracteres (su Cadena original). Codificar su cadena en bytes y decodificar los bytes nuevamente en caracteres sería una operación redundante.Si está tratando de obtener una
Reader
fuente, useStringReader
.Si está tratando de obtener un
InputStream
(que solo le proporciona bytes), use apache commonsIOUtils.toInputStream(..)
como lo sugieren otras respuestas aquí.fuente
Puedes probar Cactoos :
Entonces, si necesita un
Reader
:fuente