2016-04-11 118 views
2

私は新しいInputStream/ByteArrayInputStreamオブジェクトに各呼び出しを構築避けたいとだけではなく、arrパラメータをロードし、このInputStreamを再利用するには?

Object do(byte[] arr) { 
    InputStream is = new ByteArrayInputStream(arr); 
    return conv(is); 

のように、ByteArrayInputStreamに裏打ちされたInputStreamを経由して、いくつかのバイナリデータを読み込み、コードの一部を持っていますクラスの既存のメンバストリームに追加することができますが、これを行う簡単な方法は見つかりません。これまたは同様の動作が許可されているのか、ストリームの推奨された使用に対してこれが許可されていますか?

+3

"私は、それぞれの呼び出しで新しいInputStream/ByteArrayInputStreamオブジェクトを構築しないようにしたいと思います..." =>なぜですか?入力ストリームを再利用する必要はありません。さらに、入力ストリームは一般に一度だけしか準備できないと考えられています。 – Seelenvirtuose

+0

パフォーマンス上の理由から、同じデータを何度も読んで、同じオブジェクトを使用してデータを読み込むことはしません。 – Madden

+0

バッキングをリセットすることで新しい「ByteArrayInputStream」を作成してもパフォーマンスの問題はありませんその中に1バイトの配列があります。あなたは、あなたがあなたの質問で表現しなかったことを覚えておいて、他のいくつかの制約を持っているようです。したがって、私はそれを閉鎖するために、不明確なものとして投票します。 – Seelenvirtuose

答えて

0

これには、mark()/ reset()メソッドを使用できます。

関連する問題