• 序列化流与反序列化流


    序列化是把对象特性保存到物理介质上,反序列化是把保存在物理介质上的对象取出还原成对象。

    能被序列化的对象所属的类必须实现Serializable接口。

    1、对象序列化流ObjectOutputStream

    构造方法:

    ObjectOutputStream(OutputStream out):创建写入指定OutputStream的ObjectOutputStream

    方法:

    void writeObject(Object obj):将指定的对象写入ObjectOutputStream

    Person类

     1 package io;
     2 
     3 import java.io.Serializable;
     4 
     5 public class Person implements Serializable {
     6     private String name;
     7     private int age;
     8     
     9     public Person() {
    10         super();
    11     }
    12 
    13     public Person(String name, int age) {
    14         super();
    15         this.name = name;
    16         this.age = age;
    17     }
    18 
    19     public String getName() {
    20         return name;
    21     }
    22 
    23     public void setName(String name) {
    24         this.name = name;
    25     }
    26 
    27     public int getAge() {
    28         return age;
    29     }
    30 
    31     public void setAge(int age) {
    32         this.age = age;
    33     }
    34 
    35     @Override
    36     public String toString() {
    37         return "Person [name=" + name + ", age=" + age + "]";
    38     }
    39     
    40 }
     1 package io;
     2 
     3 import java.io.FileOutputStream;
     4 import java.io.IOException;
     5 import java.io.ObjectOutputStream;
     6 
     7 public class ObjectOutputStreamDemo {
     8 
     9     public static void main(String[] args) throws IOException {
    10         // 创建关联数据源的字节输出流对象
    11         FileOutputStream fos = new FileOutputStream("e:\javaIOTest\per.txt");
    12         // 给操作文件的字节输出流添加写入对象功能
    13         ObjectOutputStream oos = new ObjectOutputStream(fos);
    14         // 调用写入对象方法
    15         oos.writeObject(new Person("alphajuns", 23));
    16         // 关闭资源
    17         oos.close();
    18     }
    19 
    20 }

    2、对象反序列化流ObjectInputStream

    构造方法:

    ObjectInputStream(InputStream in):创建从指定InputStream读取的ObjectInputStream

    方法:

    readObject():从ObjectInputStream读取对象

     1 package io;
     2 
     3 import java.io.FileInputStream;
     4 import java.io.IOException;
     5 import java.io.ObjectInputStream;
     6 
     7 public class ObjectInputStreamDemo {
     8 
     9     public static void main(String[] args) throws IOException, ClassNotFoundException {
    10         // 创建关联数据源的字节输入流
    11         FileInputStream fis = new FileInputStream("e:\javaIOTest\per.txt");
    12         // 创建读取对象的反序列化流
    13         ObjectInputStream ois = new ObjectInputStream(fis);
    14         // 读取对象
    15         Person obj = (Person) ois.readObject();
    16         System.out.println(obj.toString());
    17         // 关闭资源
    18         ois.close();
    19     }
    20 
    21 }
  • 相关阅读:
    HDOJ 1220 Cube
    LCIS(m*n) 最长公共上升子序列
    第二百九十七天 how can I 坚持
    第二百九十六天 how can I 坚持
    第二百九十五天 how can i 坚持
    第二百九十四天 how can I 坚持
    第二百九十三天 how can I 坚持
    第二百九十、一、二天 how can I 坚持
    第二百八十九天 how can I 坚持
    第二百八十八天 how can I坚持
  • 原文地址:https://www.cnblogs.com/alphajuns/p/9943833.html
Copyright © 2020-2023  润新知