Чтение / запись объекта сериализации (киро) в файл / диск? - PullRequest
1 голос
/ 25 октября 2011

Я пытаюсь использовать Kryo для чтения / записи объектов на диск: http://code.google.com/p/kryo/

Пара вопросов:

  • Как определить размер моегобайтовый буфер?Если я сделаю его слишком маленьким, он потерпит крах, слишком большой, он съест много памяти и файлы будут огромными.Следите, разве разве Киро уже не должен знать, насколько велик объект, поскольку он сериализует его?

  • Какой хороший способ преобразовать их из байтового буфера в байтовый массив и обратно?

  • У кого-нибудь есть эффективный и быстрый способ чтения / записи объектов в файл с использованием Kyro?Мой хреновый xml примерно в 100 раз быстрее (включая разбор, а не только ввод / вывод), что не имеет смысла в соответствии с тестами.Я пытался использовать ByteBuffer для записи в FileChannel.

1 Ответ

5 голосов
/ 25 октября 2011

Вам вообще не нужно гадить с 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);
...