当前位置: 首页 > 工具软件 > Kryo > 使用案例 >

kryo com.esotericsoftware.kryo.KryoException: Buffer underflow.

谷梁凌
2023-12-01

前言

今天想使用的kryo替换掉原本java自带的序列化方式,原因是kryo的序列化速度实在是太香了,比Java至少高出了近4倍(但是kryo也有缺点,不够成熟,bug多,跨语言难等),这些都不是正点

错误

在测试1w数据的时候,反序列化一直失败,抛出下面的错误

  com.esotericsoftware.kryo.KryoException: Buffer underflow.

缓存溢出???!我原先还以为是数据太大了,就缩小数据量试一下,还是不行
尝试google,度娘都没有结果

下面先看看我的代码吧(下面的代码都是简化测试版)

原本的代码

写入

FileOutputStream os = new FileOutputStream (file)
Kyro kyro = new Kyro();
Output output = new Output (os);
kyro.writeClassAndObject(output ,object);
os .close()
output .close();

读取

FileInputStream is = new FileInputStream (file)
Kyro kyro = new Kyro();
Input input = new Intput (is);
kyro.readClassAndObject(output ,object);
is .close()
input .close();

成功后的代码


Kyro kyro = new Kyro();
Output output = new Output (os);
kyro.writeClassAndObject(new FileOutputStream (file),object);
output .close();

后记

没错,只是修改了一个FileOutputStream 的关闭而已。
在我测试1条数据的时候,发现写入序列化文件总是为null,我就意识到事情应该没有那么复杂了,
反复测试发现,如果存在使用FileOutputStream.close(),那么写入文件就会丢失

我也搞不懂原因再哪儿??

 类似资料:

相关阅读

相关文章

相关问答