序列化流:写操作
将对象变成流数据进行传输,例如保存在一个文件里,在网络中传输。对象 – 流数据(ObjectOutputStream)
反序列化流:读操作
将文件中的流对象数据或者网络中的流对象数据还原成对象。流数据 – 对象(ObjectInputStream)
注意点:
序列化对象要实现序列化接口
// 创建反序列化对象
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("user.txt"));
//流数据--对象
Object o=ois.readObject();
//释放
ois.close();
System.out.println(o);
}
private static void write() throws IOException {
// 创建序列化流对象
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("user.txt"));
//对象序列化
oos.writeObject(new User("lisi", 20));
//释放
oos.close();
}
输出:
User [name=lisi]
/*
* Serializable接口以启用其序列化功能,未实现此接口的类将无法使其任何状态序列化或反序列化。
*使用transient关键字声明不需要序列化的成员变量
*/
public class User implements Serializable{
//序列化id
private static final long serialVersionUID = -2071565876962058344L;
private String name;
//transient关键字声明不需要序列化的成员变量
private transient int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + "]";
}
public User(String name, int age) {
super();
this.name = name;
this.age = age;
}
public User() {
super();
}
}