本帖最后由 范晓冲 于 2014-1-4 16:58 编辑
为什么需要序列化和反序列化?
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。
无论是何种类型数据,都会以二进制序列的形式在网络上传送。
发送方需要把这个Java对象转换为字节序列,才能在网络上传送;
接收方则需要把字节序列再恢复为Java对象。
把Java对象转换为字节序列的过程称为对象的序列化。
把字节序列转换为Java对象的过程称为对象的反序列化。
序列化和反序列化的步骤和实例
1、Person类实现Serializable接口:
class Person implements Serializable{
int age;
String name;
public Person(int age,String name){
super();
this.age=age;
this.name=name;
}
}
2、通过ObjectOutputStream将Person对象的数据写入到文件中,即序列化。
Person person=new Person(22,"laofan");
FileOutputStream fos=null;
ObjectOutputStream oos=null;
//序列化
fos=new FileOutputStream("d:/p.txt");
oos=new ObjectOutputStream(fos);
oos.writeObject(person);
oos.flush();
oos.close();
fos.close();
3、通过ObjectInputStream将文件中二进制数据反序列化成Person对象:
ObjectInputStream ois=null;
FileInputStream fis=null;
//反序列化
fis=new FileInputStream("d:/p.txt");
ois=new ObjectInputStream(fis);
Person p=()ois.readObject();
System.out.println(p.name); |