我有一個以固定大小創建的流。緩衝區是空的。 我想能夠得到這個緩衝區的大小。什麼是這樣做的有效方式?如何獲得空的「未寫入」流的大小?
這是我所做的。
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'中,不是沒有邪惡的反射hackery。 API是專門設計的,以避免回答這個問題。 –
不要在你的問題中提出答案。 – shmosel
這是一個錯誤。我正在更新適當的討論,最後添加了錯誤的版本。糾正。謝謝。 – nikk