17

InputStreamの先頭と末尾に文字を追加する必要がある があり、 type の別の変数になるはずですInputStream。どうすればこれを簡単に行うことができますか?

4

2 に答える 2

38

SequenceInputStreamといくつかのByteArrayInputStreamが必要です。String.getBytesを使用して、後者のバイトを作成できます。SequenceInputStreamは古くからあるため、使用するのは少し不格好です。

InputStream middle ;
String beginning = "Once upon a time ...\n";
String end = "\n... and they lived happily ever after.";
List<InputStream> streams = Arrays.asList(
    new ByteArrayInputStream(beginning.getBytes()),
    middle,
    new ByteArrayInputStream(end.getBytes()));
InputStream story = new SequenceInputStream(Collections.enumeration(streams));

追加する文字がたくさんあり、それらをまとめてバイトに変換したくない場合は、それらをStringReader入れてから、 CommonsIOのReaderInputStream使用してそれらをバイトとして読み取ることができます。ただし、これを行うには、プロジェクトにCommonsIOを追加する必要があります。そのための正確なコードは、読者の練習問題として残されています。

于 2011-08-17T20:51:11.527 に答える
-1

1 OutputStreamGreg が提案したように、バイト配列に裏打ちされた新しい を作成します。
2 最初の文字を new に書き込みますOutputStream。3 既存のを新しい に
コピーします。 4 末尾の文字を新しい に書き込みます。5バッキング アレイを保持するように注意しながら 、新しい を閉じます。 6 バッキング アレイを新しい .xml として開きます。InputStreamOutputStream
OutputStream
OutputStream
InputStream

これらの手順のいずれかに問題がある場合はお知らせください。

于 2011-08-17T20:58:15.933 に答える