需要被序列化的类需要实现Serializable接口
class Demo implements Serializable{
private int id;
private String name;
public Demo(int id, String name){
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
通过io包中的ObjectOutputStream、ObjectInputStream进行对对象的序列化和反序列化
public class RwData {
public static void main(String[] args) {
Demo demo = new Demo(14,"lisi");
File file = new File("c:/aa.data");
try {
file.createNewFile();
//将对象写入
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(demo);
out.flush();
out.close();
//将对像从文件中读取
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
Demo demo2 = (Demo)in.readObject();
//输出对象值
System.out.println(demo2.getId()+" "+demo2.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
transient关键字
将属性前面加上transient修饰符,当对象被反序列化后,会得到对应属性类型的默认值,比如id设置transient,则反序列化后是0,name设置后是null