学生数据序列化存储读取


资料来源于高飞老师编著的《JAVA程序设计使用教程习题集》



序列化的过程就是对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,或通过管道传到另一线程中,或通过网络连接将对象数据发送到另一主机。对象序列化在RMI、Socket、JMS、EJB中都有应用。为实现对象数据的序列化读取,首先实现java.io.Serializable接口的类,然后采用java.io.ObjectOutputStream将对象写入字节流,最后用java.io.ObjectInputStream从字节流重构对象。

1)首先实现java.io.Serializable接口的类Student。
import java.io.Serializable;//启用序列化的接口
public class Student implements Serializable{
    static final long serialVersionUID=123456L;
    String name;
    int id;
    int height;
    public Student(String name,int id,int height)
    {
        this.name=name;
        this.id=id;
        this.height=height;
    }
    public void output()
    {
        System.out.println("姓名"+name);
        System.out.println("学号"+id);
        System.out.println("身高"+height);
    }
}
(2)采用java.io.ObjectOutputStream将对象数据写入object.dat;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class WriteObject {
    public static void main(String []args)
    {
        try{
            ObjectOutputStream f=new ObjectOutputStream(
                    new FileOutputStream("object.dat"));
            Student s=new Student("张三",201213001,172);
            f.writeObject(s);//将Student对象s写入文件
            s.output();
            f.close();
        }
        catch(Exception e){
            System.err.println("发生异常:"+e);
            e.printStackTrace();
        }
    }

}
(3)用java.io.ObjectInputStream从object.dat读出Student对象数据。
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class ReadObject {
    public static void main(String args[])
    {
        try{
            ObjectInputStream f=new ObjectInputStream(
                    new FileInputStream("object.dat"));
        //从文件中读出序列化对象,并重构成学生对象
        Student s=(Student)(f.readObject());
        s.output();
        f.close();
        }
        catch(Exception e)
        {
            System.out.println("发生异常"+e);
            e.printStackTrace();
        }
    }

}

结果:这里写图片描述


最近在做大型实验,通讯录的 设计部分必须用到序列化及反序列化,故记录一些可能会用到的代码以便之后会用到。

猜你喜欢

转载自blog.csdn.net/weixin_40874586/article/details/78917347