ObjectInputStream使用ByteArrayInputStream初始化失败

问题描述

所以我正在使用Java(JDA库)编写一个不和谐的机器人,并且正在制作数据库系统...

首先,我将YML和JSON写入文件,然后开始使用ObjectInputStream和Output版本对对象进行序列化。

然后,我有了将Windows注册表用作数据库的想法,因为它占用的存储空间更少,并且效果更好,因此我重新编写了所有内容以使用注册表。有了JSON读取器和写入器,就没有问题了,它可以写入和读取包含JSON文本的字符串值。

使用序列化的对象可以进行书写,但不能读取。 我将序列化的数据写入ByteArrayOutputStream,然后使用一种方法将字节写入注册表...

通过读取,我创建了一个ByteArrayInputStream,其中包含我从注册表读取的字节,我在控制台中记录了字节,因此我知道它成功读取了字节并将其传递给{{1} }。 然后到ByteArrayInputStream,它只是...挂起,没有引发错误,它没有挂在ObjectInputStream(<ByteArrayInputStream>),它只是挂在我初始化{{ 1}}。它不反序列化任何东西,不返回任何东西,初始化后不打印行...

代码:(对于串行读取方法,不是书面内容

readobject()

输出(控制台):

ObjectInputStream

解决方法

您正在从baos流中读取所有字节以将它们转储到控制台,因此该流为空。在下一行中,ObjectInputStream构造函数尝试读取流标头,并且由于流为空,因此它阻塞了等待数据的时间。