java中的序列化和反序列化

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();    
    }    
}
原文地址:https://www.cnblogs.com/ZXF6/p/10610649.html