【发布时间】:2017-02-04 00:55:35
【问题描述】:
我有一些不明白的地方,请帮忙。
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 个字节处,它似乎不太可能是一个对象。正如文档所说,
An ObjectInputStream deserializes primitive data and objects previously written using an ObjectOutputStream. -
如何显示输入?我认为 Arrays.toString(buffer) 是我能展示的最好的。
-
所以这是我之前评论中的问题:
data and objects previously written using an ObjectOutputStream。你不这样做。您正在读取从未通过ObjectInputStream的原始字节。
标签: java io objectinputstream bytearrayinputstream