Question

Comment puis-je transformer une valeur String en un InputStreamReader ?

Était-ce utile?

La solution

ByteArrayInputStream fait également l'affaire:

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

Autres conseils

J'ai également trouvé la classe IOUtils d'apache commons, donc:

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

Faut-il que ce soit spécifiquement un InputStreamReader? Pourquoi ne pas utiliser StringReader ?

Sinon, vous pouvez utiliser StringBufferInputStream . , mais il est déconseillé en raison de problèmes de conversion de caractères (raison pour laquelle vous devriez préférer StringReader).

Même question que @Dan - pourquoi pas StringReader?

S'il doit s'agir de InputStreamReader, alors:

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

Essayez-vous d'obtenir une fonctionnalité Reader sur InputStreamReader ou b) une fonctionnalité InputStream sur InputStreamReader ? Vous n'obtiendrez pas b). InputStreamReader n'est pas un InputStream .

Le but de InputStreamReader est de prendre un InputStream - une source d'octets - et de décoder les octets en caractères sous la forme d'un Reader . Vous avez déjà vos données sous forme de caractères (votre chaîne d'origine). Encoder votre chaîne en octets et décoder les octets en caractères serait une opération redondante.

Si vous essayez d'extraire un Reader de votre source, utilisez StringReader .

Si vous essayez d'obtenir un InputStream (qui ne vous donne que des octets), utilisez apache commons IOUtils.toInputStream (..) comme suggéré par d'autres réponses ici.

Vous pouvez essayer Cactoos :

InputStream stream = new InputStreamOf(str);

Ensuite, si vous avez besoin d’un Reader :

Reader reader = new ReaderOf(stream);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top