Come trasformare una stringa in un InputStreamReader in java?

Come posso trasformare un valore String in un InputStreamReader ?

ByteArrayInputStream fa anche il trucco:

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

Ho anche trovato la class IOUtils commons apache, quindi:

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

Deve essere specificamente un InputStreamReader? Che ne dici di usare StringReader ?

Altrimenti, è ansible utilizzare StringBufferInputStream , ma è deprecato a causa di problemi di conversione dei caratteri (motivo per cui si dovrebbe preferire StringReader).

La stessa domanda di @Dan – perché non StringReader?

Se deve essere InputStreamReader, quindi:

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

Stai cercando di ottenere a) Funzionalità Reader da InputStreamReader , o b) Funzionalità InputStream da InputStreamReader ? Non avrai b). InputStreamReader non è un InputStream .

Lo scopo di InputStreamReader è di prendere un InputStream – una fonte di byte – e decodificare i byte in caratteri in forma di Reader . Hai già i tuoi dati come caratteri (la tua stringa originale). Codificare la stringa in byte e decodificare i byte di nuovo in caratteri sarebbe un’operazione ridondante.

Se stai cercando di estrarre un Reader dalla tua fonte, usa StringReader .

Se stai cercando di ottenere un InputStream (che ti dà solo byte), usa i comuni comuni di apache IOUtils.toInputStream(..) come suggerito da altre risposte qui.

Puoi provare Cactoos :

 InputStream stream = new InputStreamOf(str); 

Quindi, se hai bisogno di un Reader :

 Reader reader = new ReaderOf(stream);