固定サイズで作成されたストリームがあります。バッファは空です。 このバッファのサイズを取得できます。これを行う効率的な方法は何ですか?空の "未書き込み"ストリームのサイズを取得する方法は?
ここに私が行ったことがあります。
static OutputStream CreateBuffer()
{
return (OutputStream) new ByteArrayOutputStream(100);
}
static int GetBufferSize(OutputStream out)
{
return ((ByteArrayOutputStream) out).size();
}
public static void main(String[] args)
{
System.out.println(GetBufferSize(CreateBuffer()));
}
予想通り100
です。私はなぜそれが0であるのか知っています - ストリームは割り当てられただけですが、実際にまだ何も書き込まれていません。実際にデータをコピーせずに空の出力ストリームのサイズを取得するにはどうすればよいでしょうか?
あなたが100を出ようと思っているなら、あなたが求めていることは不可能だと確信しています。バニラのByteArrayOutputStreamではなく、邪悪な反射のハッピーなしではありません。 APIは、この質問に答えることを避けるために特別に設計されています。 –
質問に答えを入れないでください。 – shmosel
それは間違いでした。私は適切なforamttingで更新していた、間違ったバージョンを追加しました。修正されました。ありがとうございました。 – nikk