2011-10-25 7 views
1

私は、ディスクへ/書き込みオブジェクトを読み取るためにKryoを使用しようとしている:http://code.google.com/p/kryo/ファイル/ディスクにSerializeオブジェクト(kyro)を読み書きする?

カップルの質問:

  • は、どのように私は私のバイトのバッファのサイズを決定するのですか?小さすぎるとクラッシュし、大きすぎるとメモリが大量に消費され、ファイルが膨大になります。フォローアップ、それはそれをシリアル化して以来、オブジェクトがどれだけ大きいかをすでに知っているべきではありませんか?

  • ByteBufferからバイト配列に変換して戻す良い方法はありますか?

  • 誰でも、Kyroを使ってオブジェクトをファイルに読み書きする効果的かつ素早い方法がありますか?私のyucky xmlはベンチマークによって意味をなさない約100倍高速です(これは解析だけでなく、I/Oも含みます)。 ByteBufferをFileChannelに書き込むことを試みました。

答えて

5

あなたが実際にあなたがcom.esotericsoftware.kryo.ObjectBuffer

はあなたがシリアライズするクラスMyObjectを持っているふりを使用することができ、全くByteBufferでマックする必要はありません。

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

関連する問題