java序列化与反序列化

 1,做了一个控制台版的学生管理系统,通过Scanner输入学生信息,进行增改删查操作。但是每次运行程序都需要输入学生信息,很麻烦,就想到了序列化与反序列化。

2,什么是序列化与反序列化

java序列化是指把java对象转化为字节序列的过程,而java反序列化是指把字节序列恢复为java对象的过程.

3,我们在退出系统之前,将系统现存的所有对象序列化成字节序列放到磁盘中,做持久化保存。以后用到时就从磁盘读出来。

4,我们在运行系统时,将磁盘中的字节序列反序列化成对象放到程序中。这样两个过程就实现了对象的持久化管理。

package util;

import java.io.*;
//序列化与反序列化工具类
public class Serial {
//序列化对象到磁盘中,ArrayUtil是装对象的容器,相当于ArrayList,str是磁盘路径
    public void SerialToFile(ArrayUtil au,String str)throws IOException{
//获取到输出流
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(str));
        if(au != null && str != null) {
//迭代出容器中的对象,并写入到输出流中
            for(int i = 0;i<au.size();i++) {
                oos.writeObject(au.get(i));
            }
            oos.close();
        }
    }
//反序列化方法,str是磁盘路径,从该路径下获取对象数据,ArrayUtil用于装反序列化后得到的对象
    public ArrayUtil DeSerialToProgram(String str,ArrayUtil arr){
        try {
            FileInputStream fileInputStream = new FileInputStream(str);
            ObjectInputStream ois = new ObjectInputStream(fileInputStream);
//available()方法是获取到文件中剩余字节数,只要字节数不为0,就可以循环读出所有对象
            System.out.println(fileInputStream.available());
            while (fileInputStream.available()>0){
//循环迭代出所有的对象,并装入ArrayUtil中
                arr.add(ois.readObject());
            }
        }catch (IOException e){
            System.out.println("读到文件末尾了");
        }catch (ClassNotFoundException e){
            System.out.println("未找到该文件");
        }
            return arr;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值