ObjectInputStream与ObjectOutputStream
被操作的对象需要实现Serializable标记接口
1、ObjectOutputStream-对象序列化
将对象写到硬盘上。
FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(12345);
oos.writeObject("Today");
oos.writeObject(new Date());
oos.close;
存储自定义对象时,要实现对象序列化,对象要实现Serializable接口
class Person implements Serializable{
...
}
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.object"));
oos.writeObject(new Person("小强",30));
oos.close;
2、ObjectInputStream-对象反序列化
读取存储在硬盘上的对象。
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(“obj.object”));
Person p = ois.readObject();
System.out.println(p.getName()+p.getAge());
ois.close();
3、序列化接口 - Seriallizable
显示化序列号
class Person {
private static final long serialVersionUID = 97274;
}
将对象存储到硬盘后,即使改动了Person类,依然能识别该类和取出的对象是同一个版本。
4、关键字 - transient
静态属性不会加入序列化写入到硬盘中。
非静态属性,如果不想写入到硬盘中,需要关键字transient(短暂的)修饰。
private static int age;
private transient String name;
都不会被序列化写入硬盘中。