variable una texto teclado scanner por leer ingresar declarar datos como clase cadena java string stream

texto - ¿Cómo convierto una cadena en un InputStreamReader en java?



leer una variable en java (6)

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


¿Está tratando de obtener a) la funcionalidad del Reader de InputStreamReader , o b) la funcionalidad de InputStreamReader 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í.


¿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 (razón por la cual 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);


Puedes probar Cactoos :

InputStream stream = new InputStreamOf(str);

Entonces, si necesitas un Reader :

Reader reader = new ReaderOf(stream);


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

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


ByteArrayInputStream también hace el truco:

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