ObjectInputStream(InputStream in):反序列化 - 把存储的对象从设备中读出,对象是依赖于其所属的类的
使用readObject()方法读取一个对象文件。使用对象的使用需要强转将obj转换为使用的对象类型
● ObjectOutputStream(OutputStream out):序列化 - 把对象进行持久的储存
对象输出流使用writeObject(Object obj)方法,将一个obj对象(必须实现Serializable接口)写入到一个文件。
● Serializable:序列化接口,用于给被序列化的类加入ID号,判断类和对象是否是同一个版本。
可序列化类通过声明为"serialVersionUID"字段(该字段必须是静态static、最终final的long型字段)显示声明自己的serialVersionUID;
如果序列化类未显示声明serialVersionUID,则序列化运行时将基于该类的各个方面计算的默认serialVersionUID值。
- 强烈建议:所有可序列话的类都显示声明serialVersionUID;
- transient:瞬态,不参与序列化;表示暂时的,这个属性不会被写入磁盘;
package cn.itcast.io.p3.ObjectStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import cn.itcast.io.p3.bean.Persion; public class ObjectStreamDemo { public static void main(String[] args) throws Exception { // writeObject(); readObject(); } public static void readObject() throws IOException, Exception{ ObjectInputStream ois = new ObjectInputStream(new FileInputStream("persion.object")); // 对象的反序列化。 Persion obj = (Persion)ois.readObject(); System.out.println(obj.getName()+":"+obj.getAge()); ois.close(); } public static void writeObject() throws IOException { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("persion.object")); // ObjectOutputStream oos = new ObjectOutputStream(System.out); // 对象的序列化,将对象排队存储到硬盘上。序列化必须实现serializable接口 oos.writeObject(new Persion("小强",30)); oos.close(); } }
原文:https://www.cnblogs.com/Dm920/p/12461722.html