资料来源于高飞老师编著的《JAVA程序设计使用教程习题集》
序列化的过程就是对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,或通过管道传到另一线程中,或通过网络连接将对象数据发送到另一主机。对象序列化在RMI、Socket、JMS、EJB中都有应用。为实现对象数据的序列化读取,首先实现java.io.Serializable接口的类,然后采用java.io.ObjectOutputStream将对象写入字节流,最后用java.io.ObjectInputStream从字节流重构对象。
(1)首先实现java.io.Serializable接口的类Student。
import java.io.Serializable;//启用序列化的接口
public class Student implements Serializable{
static final long serialVersionUID=123456L;
String name;
int id;
int height;
public Student(String name,int id,int height)
{
this.name=name;
this.id=id;
this.height=height;
}
public void output()
{
System.out.println("姓名"+name);
System.out.println("学号"+id);
System.out.println("身高"+height);
}
}
(2)采用java.io.ObjectOutputStream将对象数据写入object.dat;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class WriteObject {
public static void main(String []args)
{
try{
ObjectOutputStream f=new ObjectOutputStream(
new FileOutputStream("object.dat"));
Student s=new Student("张三",201213001,172);
f.writeObject(s);//将Student对象s写入文件
s.output();
f.close();
}
catch(Exception e){
System.err.println("发生异常:"+e);
e.printStackTrace();
}
}
}
(3)用java.io.ObjectInputStream从object.dat读出Student对象数据。
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class ReadObject {
public static void main(String args[])
{
try{
ObjectInputStream f=new ObjectInputStream(
new FileInputStream("object.dat"));
//从文件中读出序列化对象,并重构成学生对象
Student s=(Student)(f.readObject());
s.output();
f.close();
}
catch(Exception e)
{
System.out.println("发生异常"+e);
e.printStackTrace();
}
}
}
结果:
最近在做大型实验,通讯录的 设计部分必须用到序列化及反序列化,故记录一些可能会用到的代码以便之后会用到。