读取/写入Serialize对象(kyro)到文件/磁盘?

时间:2011-10-25 01:49:58

标签: java arrays serialization object bytebuffer

我正在尝试使用Kryo将对象读/写到磁盘:http://code.google.com/p/kryo/

夫妻问题:

  • 如何确定字节缓冲区的大小?如果我把它做得太小就会崩溃,太大会占用大量的内存,文件也很庞大。跟进,kyro不应该知道对象有多大,因为它是序列化的对象吗?

  • 有什么方法可以将它们从ByteBuffer转换为字节数组并返回?

  • 任何人都可以使用Kyro快速有效地读取/写入文件对象?我的令人讨厌的xml快了大约100倍(包括解析,而不仅仅是i / o)根据基准测试没有意义。我尝试使用ByteBuffer写入FileChannel。

1 个答案:

答案 0 :(得分:5)

您实际上根本不需要使用ByteBuffer,您可以使用com.esotericsoftware.kryo.ObjectBuffer

假装您要序列化的课程MyObject;

MyObject o = new MyObject();
Kryo kryo = new Kryo();
kryo.register(MyObject.class);

ObjectBuffer ob = new ObjectBuffer(kryo);
byte[] myByteArray = ob.writeObject(o);