我有一些我不明白,请帮助。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”的原始字节。 –