IO流中对象流

package io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

/**
 * 对象流: java.io.ObjectOutputStream 和 java.io.ObjectInputStream
 * 对象流是一对高级流,在流连接中的作用是进行对象的序列化(串行化)与反序列化,
 * 方便我们进行java 对象的读写操作。
 *
 * 对象序列化: 将java 对象按照其结构转换为字节序列的过程
 * 反序列化: 将字节序列还原为 java 对象的过程。
 *
 * @author YanLy
 * @date 2021/5/31  14:02
 */
public class Test10_OOSDemo {
    public static void main(String[] args) throws Exception {
        String name = "海绵宝宝";
        int age = 3;
        String gender = "男";
        String[] otherInfo = {"是一个厨师","住在海里的菠萝屋","乐观开朗"};
        Person p = new Person(name,age,gender,otherInfo);
        System.out.println(p);
        /*
        将一个Person实例写入person.obj文件中
         */
        FileOutputStream fos = new FileOutputStream("person.obj");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        /*
        void writeObject(Object obj)
        对象输出流提供了一个写出对象的方法,但是在写出对象时要求该对象所属的类必须实现了接口:
        java.io.Serializable,否则会抛出异常。

        当我们调用writeObject()将一个对象写出时,对象流会将该对象按照其结构转换为一组字节,
        这个过程称为  对象的序列化.
        序列化后的字节再经过对象流连接的文件流写出.而文件流会将这些
        字节最终写入到文件中(硬盘上)做长久保存,这个过程称为  数据持久化。
         */
        oos.writeObject(p);
        System.out.println("写出完毕");
        oos.close();
    }
}
package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.ObjectInputStream;

/**
 * ObjectInputStream 对象输入流
 * 用来读取一个java对象  -- 反序列化
 *
 * @author YanLy
 * @date 2021/5/31  15:14
 */
public class Test11_OISDemo {
    public static void main(String[] args) throws Exception {
        // 将person.obj文件中的对象读取出来
        FileInputStream fis = new FileInputStream("person.obj");
        ObjectInputStream ois = new ObjectInputStream(fis);
        Person p = (Person)ois.readObject();
        System.out.println(p);
        ois.close();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值