序列化

序列化

概述:

Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据对象的类型对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。

 

ObjectOutputStream类

ObjectOutputStream 类,将Java对象的原始数据类型写出到文件,实现对象的持久存储。

 

构造方法:

创建一个指定OutputStream的ObjectOutputStream。

 

序列化操作:

  • 该类必须实现java.io.Serializable 接口,Serializable 是一个标记接口,不实现此接口的类将不会使任何状态序列化或反序列化,会抛出NotSerializableException

  • 该类的所有属性必须是可序列化的。如果有一个属性不需要可序列化的,则该属性必须注明是瞬态的,使用transient 关键字修饰。

  代码

 

     public class Employee implements java.io.Serializable {
        public String name;
        public String address;
      public transient int age; // transient瞬态修饰成员,不会被序列化
    public void addressCheck() {
        System.out.println("Address check : " + name + " -- " + address);
    }
   }

 

反序列化操作:


public class DeserializeDemo {
  public static void main(String [] args)   {
       Employee e = null;
       try {
            // 创建反序列化流
            FileInputStream fileIn = new FileInputStream("employee.txt");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            // 读取一个对象
            e = (Employee) in.readObject();
            // 释放资源
            in.close();
            fileIn.close();
      }catch(IOException i) {
            // 捕获其他异常
            i.printStackTrace();
            return;
      }catch(ClassNotFoundException c) {
      // 捕获类找不到异常
            System.out.println("Employee class not found");
            c.printStackTrace();
            return;
      }
       // 无异常,直接打印输出
       System.out.println("Name: " + e.name); // zhangsan
       System.out.println("Address: " + e.address); // beiqinglu
       System.out.println("age: " + e.age); // 0
  }
}

心得:
每一份坚持都是成功的累积,只要相信自己,总会遇到惊喜,每一种生活都有自己的轨迹,记得肯定自己,不要轻言放弃;每一个清晨都是希望的开始,记得鼓励自己,展现自信的魅力。越努力越幸运。
 



posted @ 2020-09-02 19:29  十二cs  阅读(98)  评论(0)    收藏  举报