java-ObjectStream初步认识

来源:互联网 发布:mac 迅雷怎么断点下载 编辑:程序博客网 时间:2024/05/01 03:18

import java.io.*;
class ObjectStreamDemo
{
 public static void main(String[] args) throwsException, IOException, ClassNotFoundException
 {
  setObjectStream();
  getObjSetStream();
 }
 public static void setObjectStream() throwsIOException
 {
  ObjectOutputStream oos = newObjectOutputStream(new FileOutputStream("obj.txt"));

  oos.writeObject(newPerson("zhangsan", 20)); //对象的本地持久化存贮.将对象记录到文件,需要用ObjectInpuStream来读取.
  oos.writeObject(newPerson("lisi", 30));
  oos.writeObject(newPerson("wangwu", 25));

  oos.close();
 }

 public static void getObjSetStream() throwsException, IOException, ClassNotFoundException
 {
  ObjectInputStream ois = newObjectInputStream(newFileInputStream("obj.txt")); //修改Person类后,读取的还是老文件,现在Person.class对应同一个UID值,现在也可以读取数据.

  Person p1 =(Person)ois.readObject();
  Person p2 =(Person)ois.readObject();
  Person p3 =(Person)ois.readObject();

  System.out.println(p1.toString());
  System.out.println(p2.toString());
  System.out.println(p3.toString());
 }
}

class Person implements Serializable //标记接口,类通过实现 java.io.Serializable接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。
        //对象进行了修改,则其对应的UID变化,记录到新文件(obj1.txt),如果读取的还是记录老版本对修改象的文件(obj.txt),就会抛出异常:
         //Exceptionin thread "main" java.io.InvalidClassException: Person; local classin
         //compatible:stream classdesc serialVersionUID = 4491012183083119912, localclass
         //serialVersionUID = 4802475284912361980
         //两次的类文件.class的serialVersionUID不一致,这时候,需要我们手动指定serialVersionUID的值.
 public static final long serialVersionUID =42L;  //自定义serialVersionUID,修改类时,读老版本文件可以读出.
 //什么时候定义该UID号?如果类的修改不大,为了避免运行时抛出异常,就需要定义自己的UID号,使得不同版本的类文件指向同一个ID.

 //不需要进行存贮的字段,需要用static、transient修饰.
 private transient String name; //transient - 瞬态
 private int age;
    private intnum;  //修改的部分.   

 Person(String name, int age)
 {
  this.name = name;
  this.age = age;
 }

 public String toString()
 {
  return "name=" + name + ",age=" + age;
 }
}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小学生上课不听讲怎么办 孩子成绩下滑家长怎么办 五年级成绩下滑怎么办 婴儿吃纸了怎么办 宝宝吃纸了怎么办 宝宝吃所料怎么办 宝宝爱吃卫生纸怎么办 宝宝看了强光怎么办 宝宝看了浴霸灯怎么办 一周半宝宝腹泻怎么办 小儿三天不大便怎么办 小宝宝腿纹不对怎么办 孩子个子太高怎么办 宝宝拉粑粑干硬怎么办 美国办新生儿护照怎么办 怀孕拉绿色大便怎么办 幼儿园孩子不爱学习怎么办 幼儿园老师管不住孩子怎么办 手机支架夹不住怎么办 画水彩没有留白液怎么办 水彩颜料脱胶了怎么办 指甲油涂到手上怎么办 抖音里没有控雨怎么办 qq视频没有特效怎么办 组长刁难员工员工怎么办 想转行没精力怎么办 桔子树无法退款怎么办 保温箱婴儿哭了怎么办 宝宝不爱吃肉泥怎么办 苹果x卡死了怎么办 苹果6手机用着卡怎么办 二个月宝宝肚子胀气怎么办 一岁半宝宝大便干结怎么办 婴儿上大便费劲怎么办 宝宝便秘半年了怎么办 1岁宝宝便秘怎么办 两个月积食了怎么办 婴儿拉青色大便怎么办 一周岁宝宝便秘怎么办 两岁宝宝内火重怎么办 一岁宝宝内火重怎么办