我有一些我不明白,請幫助。ByteArrayInputStream到ObjectInputStream消失
System.out.println("\n" + Arrays.toString(buffer) + "\n");
System.out.println("buffer.length = " + buffer.length + "\nnew ByteArrayInputStream(buffer).available() is: " + new ByteArrayInputStream(buffer).available());
ObjectInput input = new ObjectInputStream(new ByteArrayInputStream(buffer));
System.out.println("input.available(): " + input.available());
其輸出低於:
[-84, -19, 0, 5]
buffer.length = 4
new ByteArrayInputStream(buffer).available() is: 4
input.available(): 0
我很困惑,爲什麼4個的有效字節一個字節數組,投入的ObjectInputStream後,就變成零。
事情我已經嘗試:
- 起初,我懷疑我的字節數組是空的,但正如你看到的,我打印出來,其長度爲4
- 後來我想我的字節可能無效,所以我打印出每個字節,如你所見,這四個字節都是有效的。
因此,我迷失了爲什麼會發生這種情況。
請幫助,非常感謝!
什麼是輸入數據?在4個字節處,它似乎不太可能是一個對象。正如文檔所說,「ObjectInputStream反序列化先前使用ObjectOutputStream寫入的原始數據和對象。」 –
如何顯示輸入?我認爲Arrays.toString(緩衝區)是我能展示的最好的。 – FisherCoder
所以在我以前的評論中有這個問題:'先前使用ObjectOutputStream編寫的數據和對象'。你不這樣做。您正在讀取從未通過「ObjectInputStream」的原始字節。 –