JAVA——IO流 之 处理流之Object流(4)

来源:互联网 发布:基于单片机论文 编辑:程序博客网 时间:2024/06/07 16:09

1. ObjectInputStream和ObjectOutputStream

  • (1)要存储一个对象,只要把该对象的所有的成员变量都存储起来就能实现了。同时,我们只要读取了一个对象原来保存的所有成员变量的值,就等于读取到了一个对象。

  • (2)ObjectInputStream和ObjectOutputStream流,就可以完成保存和读取对象成员变量取值的过程。

  • (3)要读写或存储的对象必须要被序列化,ObjectOutputStream和ObjectInputStream流保存和读取对象的机制分别是序列化和反序列化。实现对象的序列化,就是要使该对象实现Serializable接口。Serializable接口中没有定义任何方法,仅仅被用作一种标记,以便编译器作特殊处理。
  • (4)对象序列化就是把一个对象变为二进制的数据流的一种方法,通过对象序列化可以方便地实现对象的传输和存储。

  • (5)序列化的好处在于:它可以将任何实现了Serializable接口的对象转换成为连续的字节数据,这些数据以后仍可以被还原原来的对象状态,即使这些数据通过网络传输也没问题。序列化能处理不同操作系统上的差异,我们可以在Windows上产生某个对象,将它序列化存储,然后通过网络传到linux机器上,该对象仍然可以被正确重建出来,在这期间,我们完全不用担心不同机器上的不同的数据表示方式。

2. 示例

import java.io.*;public class TestObjectIO{    public static void main(String args[]) throws IOException,ClassNotFoundException    {        Student stu = new Student(10,"kangkang",12,"goverment");        FileOutputStream fos = new FileOutputStream("my.txt");        ObjectOutputStream os = new ObjectOutputStream(fos);        os.writeObject(stu);        os.close();        stu = null;        FileInputStream fis = new FileInputStream("my.txt");        ObjectInputStream is = new ObjectInputStream(fis);        stu = (Student)is.readObject();        /*public final Object readObject()throws IOException,ClassNotFoundException*/        is.close();        System.out.println("id is:"+stu.id);        System.out.println("name is:"+stu.name);        System.out.println("age is:"+stu.age);        System.out.println("department is:"+stu.department);    }   }class Student implements Serializable{    private int id;    private String name;    private int age;    private String department;    public Student(int id, String name, int age, String department)    {        this.id = id;        this.name = name;        this.age = age;        this.department = department;    }}
  • 编译,运行:
D:\JavaProject\demo13_IO\ObiectStream>javac TestObjectIO.javaD:\JavaProject\demo13_IO\ObiectStream>java TestObjectIOid is:10name is:kangkangage is:12department is:goverment
原创粉丝点击