2011-01-28 5 views

答えて

1

それは書くことが非常に簡単です:任意の更なる又は再割り当てが発生した位置が書き込まれているかどうかに基づいて、入力ストリームに反映されなくてもよいByteArrayOutputStreamに書き込む

public class ThinkOfADecentName extends ByteArrayOutputStream 
{ 
    public ByteArrayInputStream createInputStream() 
    { 
     // Uses protected fields 
     return new ByteArrayInputStream(buf, 0, count); 
    } 
} 

留意されたいです。基本的に私は書き込みを終えた後にこれを呼び出すだけです:)

+0

MyByteArrayInputStreamCreatingByteArrayOutputStreamはどうなりますか? :) – sfussenegger

+0

ええ、しかし護衛を書いてsux :) –

0

本当に必要ですか?いくつかのバイトの入力ストリームは、1つのライナーです:

InputStream in = new ByteArrayInputStream(
        new ByteArrayOutputStream(bytes).toByteArray())); 

が(Jonのソリューションを使用すると、内部的に新しいバイト配列を作成していないので、この1つのライナーは少し遅いかもしれませんし、いくつかの余分なmemeoryを使用しています利点。 :クラス名を作成する必要はありません;-))

+0

私は余分なメモリが質問をする目的だったと仮定していた: "それはすべてのコピーを行うために少しばかだと思う" –

+0

@ジョン - 私も - 後あなたの答えを読む;) –

関連する問題