我正在尝试使用kryo进行二进制序列化和反序列化。我认为我已经实现了序列化,但是似乎无法反序列化。以下是我正在研究的代码,但最终我想存储一个byte[],稍后再次读取它。文档只展示了如何使用文件进行操作。
Kryo kryo = new Kryo();
kryo.register(ArrayList.class);
kryo.register(Modifier.class);
ByteArrayOutputStream b = new ByteArrayOutputStream();
Modifier modifier = new Modifier();
modifier.type = "Yo swa!";
modifier.amount = 10;
Output output = new Output(b);
kryo.writeClassAndObject(output, modifier);
System.out.println("Kryo size: " + output.toBytes().length);
Input input = new Input(output.getBuffer());
//Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 11, Size: 0
Modifier r = kryo.readObject(input, Modifier.class);
//Same error:
Modifier r = kryo.readObject(new Input(new ByteArrayInputStream(output.toBytes())), Modifier.class);
System.out.println(r.type);
b
是什么? - DiciModifier r = kryo.readObject(new Input(new ByteArrayInputStream(output.toBytes())), Modifier.class);
但仍然出现相同的错误... - MadmenyowriteClassAndObject
,但是却用readObject
进行读取。你应该使用writeObject
进行写入或者使用readClassAndObject
进行读取。 - Dici