Comment puis-je transformer une valeur String
en un InputStreamReader
?
ByteArrayInputStream fait aussi l'affaire:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
J'ai aussi trouvé la classe Apache commons IOUtils
, donc:
InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
Faut-il que ce soit spécifiquement un InputStreamReader? Que diriez-vous d'utiliser StringReader ?
Sinon, vous pourriez utiliser StringBufferInputStream , mais il est obsolète 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?
Si ce doit être 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) InputStream
fonctionnalité 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). Coder 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'une Reader
:
Reader reader = new ReaderOf(stream);