Comment puis-je transformer une String
valeur en un InputStreamReader
?
281
ByteArrayInputStream fait également l'affaire:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
Convertissez ensuite en lecteur:
InputStreamReader reader = new InputStreamReader(is);
ByteArrayInputStream
: Depuis: JDK1.0 Il n'y a pas la moindre raison de supposer que cette classe est "depuis Java 1.4". Ce mauvais numéro de version est particulièrement étrange lors de l'introduction de Java 1.4NIO
et il n'a pas de sens d'introduire une API et son successeur conceptuel dans la même version.J'ai également trouvé la
IOUtils
classe apache commons , donc:la source
new InputStreamReader(IOUtils.toInputStream(myString, "UTF-16"), "UTF-16")
serait sans perte.String
en unbyte[]
tableau pour reconvertir les octets enchar
s alors…Doit-il être 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 (c'est pourquoi vous devriez préférer StringReader).
la source
Même question que @Dan - pourquoi pas StringReader?
Si ce doit être InputStreamReader, alors:
la source
byte[] bytes = charset.getBytes();
Essayez-vous de retirer a) des
Reader
fonctionnalités deInputStreamReader
ou b) desInputStream
fonctionnalitésInputStreamReader
? Vous n'obtiendrez pas b).InputStreamReader
n'est pas unInputStream
.Le but de
InputStreamReader
est de prendre unInputStream
- une source d'octets - et de décoder les octets en caractères sous la forme d'unReader
. Vous avez déjà vos données sous forme de caractères (votre chaîne d'origine). L'encodage de votre chaîne en octets et le décodage des octets en chars serait une opération redondante.Si vous essayez de tirer
Reader
parti de votre source, utilisezStringReader
.Si vous essayez d'obtenir un
InputStream
(qui ne vous donne que des octets), utilisez apache commonsIOUtils.toInputStream(..)
comme suggéré par d'autres réponses ici.la source
Vous pouvez essayer Cactoos :
Ensuite, si vous avez besoin d'un
Reader
:la source