Java中序列化和反序列化
一、介绍
序列化:将java bean对象转化为二进制字节序列。
反序列化:将二进制字节序列转化为java bean对象。
二、过程:
1、要序列化首先实现接口java.io.Serializable。
2、要添加一个ID serialVersionUID,这个ID的作用就是在序列化和反序列化中用来验证是否同一个类。
3、序列化是通过ObjectQutputStream类的writeObject()方法将对象直接写出。
4、反序列化是通过ObjectQutputStream类的readObject()从流中读取对象。
三、例子
student.java
public class student implements Serializable { private static final long serialVersionUID = 1211111111L; private String stuNum; private String name; public String getStuNum() { return stuNum; } public void setStuNum(String stuNum) { this.stuNum = stuNum; } public String getName() { return name; } public void setName(String name) { this.name = name; } public student(String stuNum, String name) { this.stuNum = stuNum; this.name = name; } }
MySerializeUtil.java
/** * 将对象序列化到指定文件中 */ public static void mySerialize(Object obj, String fileName) throws IOException { OutputStream out = new FileOutputStream(fileName); ObjectOutputStream objOut = new ObjectOutputStream(out); objOut.writeObject(obj); objOut.close(); } /** * 从指定文件中反序列化对象 */ public static Object myDeserialize(String fileName) throws IOException, ClassNotFoundException { InputStream in = new FileInputStream(fileName); ObjectInputStream objIn = new ObjectInputStream(in); Object obj = objIn.readObject(); return obj; }
运行
student student = new student(); student.setName("aaa"); student.setStuNum("1111"); String fileName="G:\\000\\serial3.txt"; try { // 对象序列化 MySerializeUtil.mySerialize(student, fileName); System.out.println("序列化原始对象完成!OK!"); // 对象的反序列化 Object obj=MySerializeUtil.myDeserialize(fileName); if(obj instanceof HealthyParams){ student student1 = (student) obj; System.out.println("反序列化之后的对象 name :"+student1.getName()); } } catch (Exception e) { e.printStackTrace(); }
运行结果:
序列化原始对象完成!OK!
反序列化之后的对象 name :aaa
反序列化之后的对象 num :1111
serial3.txt 内容
sr com.irisian.ac2.student H0? L namet Ljava/lang/String;L stuNumq ~ xpt aaat 1111
浙公网安备 33010602011771号