IO流之对象流

IO流之对象流

  1. 序列化:将内存中的java对象保存到磁盘中或通过网络传输出去

  2. 反序列化:将磁盘文件中的对象还原为内存中的一个Java对象

package com.yicurtain.IO;

import org.junit.Test;

import java.io.*;

public class ObjectInputOutputStreamTest {
    //序列化过程
    @Test
    public void test1(){
        ObjectOutputStream oos = null;
        try {
//            1.创建文件路径和对象流
            oos = new ObjectOutputStream(new FileOutputStream("object.dat"));
//            2.写出操作
            oos.writeObject(new String("我爱北京*"));
            oos.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (oos!=null)
//                 3.   关闭流
                oos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }





    }

//反序列化过程
        @Test
    public void test2(){
        ObjectInputStream ois = null;
        try {
//            1.创建文件路径和对象流
            ois = new ObjectInputStream(new FileInputStream("object.dat"));
//            2.写出操作
            Object obj = ois.readObject();
            String str=(String)obj;
            System.out.println(str);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                if (ois!=null)
//                    3.关闭流
                ois.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }




    }
}

p613

自定义类实现序列化

Person类需要满足如下要求,方可序列化

  1. 需要实现接口:Serializable
  2. 当前类提供一个全局常量:public static final long serialVersionUID = 456789L;
  3. 当前类的所有属性也必须满足时可序列化的。(默认情况下,基本数据类型是可序列化的)
  4. ObjectInputStream和ObjectOutputStream不能序列化static和transient修饰的成员变量。

序列化机制(重要)

​ 对象序列化机制允许 把内存中的Java对象转换成平台无关的二进制流,从
而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传
输到另一个网络节点。//当其它程序获取了这种二进制流,就可以恢复成原
来的Java对象

上一篇:ECS使用感受


下一篇:序列化-JDK自带Serializable