package com.hanchao.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import com.hanchao.demo.Person;
/**
* 测试类
* @author hanlw
* 2012 - 07 -05
*/
public class Test_Four {
public static void main(String[] args) throws Exception{
/**
* 序列化和反序列化
*
* 1.反序列化 :ObjectInputStream → java.io.InputStream
* (流 → Java对象)
*
* 2.序列化 : ObjectOutputStream → java.io.OutputStream
* (Java对象 → 流,即ObjectOutputStream将Java对象的基本数据类型和图形写入OutputStream中)
* (注意:只能将支持java.io.Serializable接口的对象写入流中。
* 即:类通过实现此接口来启动其序列化功能)
*
* 3.
一个JAVA对象如果要进行序列化和反序列化,必须实现java.io.Serializable接口。
*
* 4.可序列化类的子类也是可序列化的,但是如果子类可序列化,但是父类不一定可以序列化
*
* 5.序列化运行时使用一个称为serialVersionUID的版本号,与每个可序列化类相关联。
* 该序列号在反序列化过程中用于验证序列化对象的发送者与接受者是否为该对象加载了与序列化兼容的类。
*
*/
/**
* 1.序列化
*/
File file = new File("C:/person.data");
//文件输出流
FileOutputStream fileOutputStream = new FileOutputStream(file);
//对象输出流
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
Person person = new Person();
person.setAddrees("中国");
person.setAge(12);
//序列化
objectOutputStream.writeObject(person);
objectOutputStream.flush();
objectOutputStream.close();
/**
* 2.反序列化
*/
//文件输入流
FileInputStream fileInputStream = new FileInputStream(file);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Person p = (Person) objectInputStream.readObject();
System.out.println("年龄:"+p.getAge()+"\t地址:"+p.getAddrees());
objectInputStream.close();
}
}
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
person类
package com.hanchao.demo;
import java.io.Serializable;
/**
* 实体类
* @author hanlw
* 2012 - 07 -05
*/
public class Person implements Serializable{
private int age;
private transient String name;
//注意事项:当你不想让Person类的某个属性参与序列化时,加上transient这个修饰符。如上
private String addrees;
//get...set...
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddrees() {
return addrees;
}
public void setAddrees(String addrees) {
this.addrees = addrees;
}
}
本文转自韩立伟 51CTO博客,原文链接:http://blog.51cto.com/hanchaohan/922470
,如需转载请自行联系原作者