【问题标题】:Reading/Writing a Serialize object (kyro) to file/disk?将序列化对象(kyro)读/写到文件/磁盘?
【发布时间】:2011-12-14 14:13:58
【问题描述】:

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

几个问题:

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

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

  • 谁有使用 Kyro 将对象读/写到文件的有效且快速的方法?我令人讨厌的 xml 大约快 100 倍(包括解析,而不仅仅是 i/o),根据基准,这没有意义。我尝试使用 ByteBuffer 写入 FileChannel。

【问题讨论】:

    标签: java arrays serialization object bytebuffer


    【解决方案1】:

    其实你根本不需要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);
    

    【讨论】:

    • 你的意思是获取字节数组后可以dump到文件吗?
    • 如果是这样,反序列化回对象的最简单方法是什么?
    猜你喜欢
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2017-10-19
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多