Domanda

Come posso trasformare un valore String in un InputStreamReader ?

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top