2011-10-25 71 views
1

我试图用KRYO读/写对象盘:http://code.google.com/p/kryo/读取/写入序列化对象(kyro)到文件/磁盘?

夫妇的问题:

  • 我如何确定我的字节缓冲区的大小?如果我把它做得太小,它会崩溃,太大会消耗大量内存,并且文件很大。后续,不应该kyro已经知道对象是多大,因为它是一个序列化的对象?

  • 什么是将它们从ByteBuffer转换为字节数组并返回的好方法?

  • 任何人都有一个有效和快捷的方式来读/写对象文件使用Kyro?根据基准测试,我的糟糕xml速度大约快100倍(包括解析,而不仅仅是i/o)。我尝试使用ByteBuffer写入FileChannel。

回答

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); 
+0

你的意思是,获得字节数组后,我可以将其转储到文件? – Bostone

+0

如果是这样,反序列化回到对象最简单的方法是什么? – Bostone