首页 > 技术文章 > 【序列化与反序列化流】

zuixinxian 2019-01-31 10:02 原文

package test;

import java.io.*;

/**
 * @author shusheng
 * @description 序列化与反序列化流
 * @Email shusheng@yiji.com
 * @date 2018/12/23 16:49
 */
public class ObjectStreamDemo {
    //当有些变量不需要序列化时使用 transient 关键字申明不需要序列化的成员变量
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //序列化数据其实就是把对象写到文本文件中
        write();
        //反序列化
        read();
    }

    private static void read() throws IOException, ClassNotFoundException {
        //创建反序列化对象
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("a.txt"));
        Object obj = ois.readObject();
        //释放资源
        ois.close();
        //输出对象
        System.out.println(obj);
    }

    private static void write() throws IOException {
        //创建序列化对象
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("a.txt"));

        //创建对象
        Person p= new Person("林青霞",27);

        //public final void writeObject(Object obj)
        oos.writeObject(p);

        //释放资源
        oos.close();
    }

}

class Person implements Serializable{
    private static final long serialVersionUID = 2476243158969951686L;

    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

 

推荐阅读