简体   繁体   中英

How do I turn a String into a InputStreamReader in java?

如何将String值转换为InputStreamReader

ByteArrayInputStream also does the trick:

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

Then convert to reader:

InputStreamReader reader = new InputStreamReader(is);

我还找到了 apache commons IOUtils类,所以:

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

Does it have to be specifically an InputStreamReader? How about usingStringReader ?

Otherwise, you could use StringBufferInputStream , but it's deprecated because of character conversion issues (which is why you should prefer StringReader).

Same question as @Dan - why not StringReader ?

If it has to be InputStreamReader, then:

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

Are you trying to get a) Reader functionality out of InputStreamReader , or b) InputStream functionality out of InputStreamReader ? You won't get b). InputStreamReader is not an InputStream .

The purpose of InputStreamReader is to take an InputStream - a source of bytes - and decode the bytes to chars in the form of a Reader . You already have your data as chars (your original String). Encoding your String into bytes and decoding the bytes back to chars would be a redundant operation.

If you are trying to get a Reader out of your source, use StringReader .

If you are trying to get an InputStream (which only gives you bytes), use apache commons IOUtils.toInputStream(..) as suggested by other answers here.

You can try Cactoos :

InputStream stream = new InputStreamOf(str);

Then, if you need a Reader :

Reader reader = new ReaderOf(stream);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM