Come faccio a trasformare una stringa in un InputStreamReader in Java?
Domanda
Come posso trasformare un valore String
in un InputStreamReader
?
Soluzione
ByteArrayInputStream fa anche il trucco:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
Altri suggerimenti
Ho anche trovato la classe IOUtils
dei commons apache, quindi:
InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
Deve essere specificamente un InputStreamReader? Che ne dici di usare StringReader ?
Altrimenti, potresti utilizzare StringBufferInputStream , ma è obsoleto a causa di problemi di conversione dei caratteri (motivo per cui dovresti preferire StringReader).
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 una funzionalità Reader
da InputStreamReader
oppure b) InputStream
da InputStreamReader
? Non otterrai b). InputStreamReader
non è un InputStream
.
Lo scopo di InputStreamReader
è di prendere un InputStream
- una fonte di byte - e decodificare i byte in caratteri sotto forma di Reader . Hai già i tuoi dati come caratteri (la tua stringa originale). Codificare la stringa in byte e decodificare i byte in caratteri sarebbe un'operazione ridondante.
Se stai cercando di ottenere un Reader
dalla tua fonte, usa StringReader
.
Se stai cercando di ottenere un InputStream
(che ti dà solo byte), usa i commons 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);