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

StackOverflow https://stackoverflow.com/questions/247161

  •  05-07-2019
  •  | 
  •  

質問

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top