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();
}
}