package cn.zhou; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; /* *一、 序列化? *------------ 对象存到硬盘上! 写 write * 对象中的数据,以流的形式 ,【写入到文件中保存的过程】! * * 方法 ObjectOutputStream readObject(); 读取对象。 * * *二、反序列化? *-------------读取对象! 读 read *在文件中,以流的形式 将对象读取出来。 * *方法 ObjectInputStream * *【注意!】 *顺序问题 ,先创建 ,再读取。 两个方法写好,先运行序列化!否则异常! * * *三、阻止成员变量序列化? * transient 关键字! * 在成员变量前面修饰! * * *四、异常问题 【java.io.NotSerializableException:】 * java.io.NotSerializableException:异常, * 创建的PresonDemo类未实现Serializable接口,启动服务器会报此异常, * 对代码功能没影响,或者说暂时未发现有什么影响。 要解决此异常,可通过实现该接口解决。 * */ public class 序列化 { public static void main(String[] args) throws IOException, ClassNotFoundException { run(); run01(); } //2.反序列化 ObjectInputStream 读! read private static void run01() throws IOException, ClassNotFoundException{ //1.序列化 创建文件一步到位! ObjectInputStream a1=new ObjectInputStream(new FileInputStream("d:\game\sos.txt")); //2.readObject(); 读取对象。 Object a=a1.readObject(); //3.输出值 System.out.println(a); a1.close(); } //1.序列化流 outputstream 写 private static void run() throws IOException{ //创建文件 FileOutputStream a=new FileOutputStream("d:\game\qqq.txt"); //序列化 ObjectOutputStream a1=new ObjectOutputStream(new FileOutputStream("d:\game\qqq.txt")); //在外部新建PresonDemo类 添加数据 PresonDemo p=new PresonDemo("张三", 23); //关闭流 a1.close(); } }