¿Cómo puedo transformar un Stringvalor 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.4NIOy tiene poco sentido introducir una API y su sucesor conceptual dentro de la misma versión.También encontré la
IOUtilsclase apache commons , entonces:fuente
new InputStreamReader(IOUtils.toInputStream(myString, "UTF-16"), "UTF-16")Sería sin pérdidas.Stringen unabyte[]matriz para convertir los bytes de nuevo achars 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
Readerfuncionalidad deInputStreamReaderob) laInputStreamfuncionalidad deInputStreamReader? No obtendrás b).InputStreamReaderno es unaInputStream.El propósito de
InputStreamReaderes tomarInputStreamuna 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
Readerfuente, 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