InputStream
の先頭と末尾に文字を追加する必要がある があり、 type の別の変数になるはずですInputStream
。どうすればこれを簡単に行うことができますか?
2 に答える
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を追加する必要があります。そのための正確なコードは、読者の練習問題として残されています。
1 OutputStream
Greg が提案したように、バイト配列に裏打ちされた新しい を作成します。
2 最初の文字を new に書き込みますOutputStream
。3 既存のを新しい に
コピーします。
4 末尾の文字を新しい に書き込みます。5バッキング アレイを保持するように注意しながら
、新しい を閉じます。
6 バッキング アレイを新しい .xml として開きます。InputStream
OutputStream
OutputStream
OutputStream
InputStream
これらの手順のいずれかに問題がある場合はお知らせください。