Pregunta

¿Cómo puedo transformar un valor de String en un InputStreamReader ?

¿Fue útil?

Solución

ByteArrayInputStream también hace el truco:

InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );

Otros consejos

También encontré la clase IOUtils de apache commons, así que:

InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));

¿Tiene que ser específicamente un InputStreamReader? ¿Qué te parece 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).

La misma pregunta que @Dan : ¿por qué no StringReader?

Si tiene que ser InputStreamReader, entonces:

String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);

¿Está tratando de obtener una) funcionalidad Reader de InputStreamReader , o b) InputStream fuera de InputStreamReader ? Usted no obtendrá b). InputStreamReader no es un InputStream .

El propósito de InputStreamReader es tomar un InputStream , una fuente de bytes, y decodificar los bytes en caracteres en forma de un Reader . Ya tienes tus datos como caracteres (tu String original). Codificar su cadena en bytes y decodificar los bytes de nuevo a caracteres sería una operación redundante.

Si está intentando obtener un Reader de su fuente, use StringReader .

Si está intentando obtener un InputStream (que solo le da bytes), use apache commons IOUtils.toInputStream (..) como lo sugieren otras respuestas aquí.

Puedes probar Cactoos :

InputStream stream = new InputStreamOf(str);

Luego, si necesita un Reader :

Reader reader = new ReaderOf(stream);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top