代码改变世界

ObjectInputStream 和 ObjectOutputStream

2012-03-18 17:33  党飞  阅读(345)  评论(0)    收藏  举报

---------------------- android培训java培训、期待与您交流! ----------------------

这两个对象完成对对象的读写操作。我们知道,对象中的数据存在于内存中,当内程序运行完成以后对象中的数据被当成垃圾回收。

那么,如果我们想在对象用完以后,保存对象中的数据以便下次使用或在其他地方使用,应该怎么办?

ObjectInputStream 和 ObjectOutputStream就帮我们解决了这个问题,先看一个例子:

首先我们定义一个pesion类,用于存储和读写,

 

Class Persion implements Serializeble{

    String name;

    int age;

   public Persion(String name, int age)

  {

     this.name = name;

     this.age=age;

  }

   public String toString()

   return name + ":"  age;

}

}

/*注意:想实现对象持久化的类必须实现Serializeble接口,此接口是一个标记接口(没有实现方法),但定义了序列号serialVersionUID = 42L;

该序列号在反序列化过程中用于验证序列化对象的发送者和接收者是否为该对象加载了与序列化兼容的类。如果接收者加载的该对象的类的 serialVersionUID 与对应的发送者的类的版本号不同,则反序列化将会导致 InvalidClassException(源自java API)。*/

接着我们看看,把对象持久化的过程:

void writeObj(){

    ObjectOutputStream oos = new ObjectOutputStream(new FileOutptStream(persion.txt));

    oos.writeObject(new Persion("zhangsan",29));

    oos.close();

}

OK,这样我们就成功的把一个对象写入了persion.txt中。

当然,能写就能读,看看度对象的过程:

void readObj(){

    ObjectInputStrem ois = new ObjectInputStream(new FileInputStream("persion.txt"));

    Persion p= new (Persion)ois.readObject();

   System.out.println(p);

    ois.close();

}

这样我们就把对象从persion.txt中读出来了。

上面我们就完成的对象的序列化和反序列化操作。

---------------------- android培训java培训、期待与您交流! ----------------------