Comment puis-je transformer une chaîne en un InputStreamReader en Java?

Comment transformer une valeur Ssortingng en un InputStreamReader ?

ByteArrayInputStream fait également l’affaire:

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

J’ai aussi trouvé la classe IOUtils apache commons, alors:

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

Doit-il être spécifiquement un InputStreamReader? Que diriez-vous d’utiliser SsortingngReader ?

Sinon, vous pouvez utiliser SsortingngBufferInputStream , mais il est obsolète à cause de problèmes de conversion de caractères (c’est pourquoi vous devriez préférer SsortingngReader).

Même question que @Dan – pourquoi pas SsortingngReader?

S’il doit être InputStreamReader, alors:

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

Essayez-vous d’obtenir a) une fonctionnalité de Reader de InputStreamReader , ou b) InputStream fonctionnalité InputStreamReader d’ 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 SsortingngReader .

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 les Cactoos :

 InputStream stream = new InputStreamOf(str); 

Ensuite, si vous avez besoin d’un Reader :

 Reader reader = new ReaderOf(stream);