最近在做一个关于考试大数据日志分析的项目,在解决抽取试卷存放的问题中遇到需要对数据进行序列化和反序列化的问题,借此进一步了解序列化与反序列化的颜色。
序列化,简单的理解是说将对象转换成容易传输的格式的过程,把java对象转换成字节序列的过程,重要的作用是在传输和保存,保证数据的可传递性和完整性;反序列化,便是将字节对象恢复java对象的过程,重新构造成传输前的对象。
那么如何实现序列化与反序列化?
实现序列化首先需要序列化的类要实现了Serializable或Externalizable接口。需要被序列化的类实现Serializable接口,接口没有实现,implements Serializable是用来标注对象可以被序列化。然后使用一个输出流来构造一个ObjectOutputStream对象,接着使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
具体地说:序列化首先创建一个对象输出流,可以包装一个其它类型的目标输出流,例如文件输出流:
ObjectOutputStream out = new ObjectOutputStream(new fil