web-dev-qa-db-ja.com

javaで文字列をInputStreamReaderに変換するにはどうすればよいですか?

String値をInputStreamReaderに変換するにはどうすればよいですか?

270
Yossale

ByteArrayInputStream もトリックを行います:

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

また、Apache commons IOUtilsクラスが見つかりました。

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

具体的にはInputStreamReaderである必要がありますか? StringReader を使用してはどうですか?

それ以外の場合は、 StringBufferInputStream を使用できますが、文字変換の問題のために非推奨です(これがStringReaderを好む理由です)。

32
Dan Dyer

@ Dan と同じ質問-なぜStringReaderではないのですか?

InputStreamReaderである必要がある場合:

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

A)ReaderからInputStreamReader機能、またはb)InputStreamからInputStreamReader機能を取得しようとしていますか? b)を取得しません。 InputStreamReaderInputStreamではありません。

InputStreamReaderの目的は、InputStream(バイトのソース)を取得し、Readerの形式でバイトを文字にデコードすることです。データはすでに文字(元の文字列)としてあります。文字列をバイトにエンコードし、バイトを文字にデコードするのは冗長な操作です。

ソースからReaderを取得しようとしている場合は、StringReaderを使用します。

InputStream(バイトのみを提供)を取得しようとしている場合は、他の回答で提案されているように、Apache commons IOUtils.toInputStream(..)を使用してください。

3
Fai Ng

Cactoos を試すことができます:

InputStream stream = new InputStreamOf(str);

次に、Readerが必要な場合:

Reader reader = new ReaderOf(stream);
2
yegor256