使用Kryo收集序列化

时间:2013-12-26 10:29:05

标签: serialization kryo

我正在尝试使用kryo来序列化和反序列化java集合。

serializetion方法如下所示:

public <T> byte[] serialize(List<T> objectsToSerialize) {
CollectionSerializer cs = new CollectionSerializer();
Output output = new Output();
cs.write(kryo, output, objectsToSerialize);
return output.toBytes();
}

现在我想编写反序列化方法但是却无法这样做。基本上CollectionSerializer有一个read方法,但我无法理解如何使用它(据我所知,文档很差)。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您只想将Collection序列化为文件,则标准Kryo命令(例如kryo.writeClassAndObject)可以非常充分地处理。例如,以下程序将字符串集合传递给文件“testfile”并再次传回

public class TestClass{


    public static void main(String[] args) throws FileNotFoundException{
        serialize();
        deSerialize();
    }

    public static void serialize() throws FileNotFoundException{
        Collection<String>collection=new ArrayList<>();

        collection.add("This is a serialized collection of strings");

        Kryo kryo = new Kryo();
        Output output = new Output(new FileOutputStream("testfile"));
        kryo.writeClassAndObject(output, collection);
        output.close();
    }

    public static void deSerialize() throws FileNotFoundException{
        Collection<String>collection;

        Kryo kryo = new Kryo();
        Input input = new Input(new FileInputStream("testfile"));
        collection=(Collection<String>)kryo.readClassAndObject(input);
        input.close();

        for(String string: collection){
            System.out.println(string);
        }

    }


}