String
値をInputStreamReader
に変換するにはどうすればよいですか?
ByteArrayInputStream もトリックを行います:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
また、Apache commons IOUtils
クラスが見つかりました。
InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
具体的にはInputStreamReaderである必要がありますか? StringReader を使用してはどうですか?
それ以外の場合は、 StringBufferInputStream を使用できますが、文字変換の問題のために非推奨です(これがStringReaderを好む理由です)。
@ Dan と同じ質問-なぜStringReaderではないのですか?
InputStreamReaderである必要がある場合:
String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);
A)Reader
からInputStreamReader
機能、またはb)InputStream
からInputStreamReader
機能を取得しようとしていますか? b)を取得しません。 InputStreamReader
はInputStream
ではありません。
InputStreamReader
の目的は、InputStream
(バイトのソース)を取得し、Reader
の形式でバイトを文字にデコードすることです。データはすでに文字(元の文字列)としてあります。文字列をバイトにエンコードし、バイトを文字にデコードするのは冗長な操作です。
ソースからReader
を取得しようとしている場合は、StringReader
を使用します。
InputStream
(バイトのみを提供)を取得しようとしている場合は、他の回答で提案されているように、Apache commons IOUtils.toInputStream(..)
を使用してください。
Cactoos を試すことができます:
InputStream stream = new InputStreamOf(str);
次に、Reader
が必要な場合:
Reader reader = new ReaderOf(stream);