¿Cómo convierto un String en un InputStreamReader en Java?

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

ByteArrayInputStream también hace el truco:

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

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

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

¿Tiene que ser específicamente un InputStreamReader? ¿Qué hay de usar StringReader ?

De lo contrario, podría usar StringBufferInputStream , pero está obsoleto 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ás tratando de obtener a) la funcionalidad del Reader fuera de InputStreamReader , ob) la funcionalidad InputStream fuera de InputStreamReader ? No obtendrás b). InputStreamReader no es un InputStream .

El objective de InputStreamReader es tomar un InputStream , una fuente de bytes, y decodificar los bytes en caracteres en forma de Reader . Ya tiene sus datos como caracteres (su cadena original). La encoding de su Cadena en bytes y la deencoding de los bytes a caracteres sería una operación redundante.

Si está tratando de sacar un Reader de su fuente, use StringReader .

Si está tratando de 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); 

Entonces, si necesitas un Reader :

 Reader reader = new ReaderOf(stream);