序列化Serializable

创建一个类,实现Serializable接口(这是一个标志接口,给jvm识别的)

package com.io;

import java.io.Serializable;

public class Student implements Serializable {
    private String name;
    private String password;

    public Student() {
    }

    public Student(String name, String password) {
        this.name = name;
        this.password = password;
    }

    public String getName() {
        return name;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

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

从内存写入到硬盘保存这个对象

package com.io;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

/**
 * 序列化,从内存写入到硬盘保存对象
 * 反序列化,从硬盘读到内存组装对象
 *   FileOutputStream在工程项目下创建序列化文件students,这个文件保存了序列化后的对象,可以用反编译软件查看里面的内容
 */
public class ObjectOutputStreamTest01 {
    public static void main(String[] args)  throws  Exception{

        Student student = new Student("张三","123");

        //序列化
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("students"));
        //序列化对象
        oos.writeObject(student);
        //刷新
        oos.flush();
        //关闭
        oos.close();
    }
}

反序列化,读操作;从硬盘里读序列化对象的文件,这个文件叫students

package com.io;

import java.io.FileInputStream;
import java.io.ObjectInputStream;

/**
 * 反序列化对象
 * 1,参数:需要反序列化对象的那个文件
 * 2,调用readObject() 方法;
 */
public class ObjectInputStreamTest01 {
    public static void main(String[] args) throws  Exception {
        //反序列化
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("students"));
        //读,开始序列化
        Object object = ois.readObject();
        //输出对象
        System.out.println(object);
        //关闭
        ois.close();
    }
}

最终,控制的输出的是一个对象
在这里插入图片描述