javaで文字列をInputStreamReaderに変換するにはどうすればよいですか?
質問
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) InputStreamReader
から Reader
機能、またはb) InputStreamReaderから
InputStream
機能を取得しようとしていますか?コード>? 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);