对象序列化流和对象反序列化流

简介: 对象序列化流和对象反序列化流

一、对象序列化流

对象序列化流:ObjectOutputStream


将Java对象的原始数据类型和图形写入OutputStream。可以使用ObjectInputStream读取(重构)对象。可以通过使用流的文件来实现对象的持久存储。如果流是网络套接字流,则可以在另一个主机上或另一个进程中重构对象


对象序列化是把对象转换成字节序列的过程

构造方法:

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

序列化对象的方法:

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

注意:

一个对象要想被序列化,该对象所属的类必须实现Serializable接口


类的序列化由实现java.io.Serializable


Serializable是一个标记接口,实现该接口,不需要重写任何方法

代码:

public class Student implements Serializable {
    private String name;
    private int age;
    public Student() {
    }
    public Student(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;
    }
}
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class ObjectOutputStreamDemo {
    public static void main(String[] args) throws IOException {
        //ObjectOutputStream(OutputStream out):创建一个写入指定OutputStream的ObjectOutputStream
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("fos.txt"));
        //创建对象
        Student s = new Student("林青霞",30);
        //void writerObject(Object obj):将指定的对象写入ObjectOutputStream
        oos.writeObject(s);
        //释放资源
        oos.close();
    }
}

运行结果:

17128bd4bbf140c19f3149c2793994c1.png

控制台:


文件:

9d6628521850451393484afd2f027dc1.png

二、对象反序列化流

对象反序列化流:ObjectInputStream


ObjectInputStream反序列化先前使用ObjectOutputStream编写的原始数据和对象


对象反序列化流是把已经对象序列化的字节序列转换成对象的过程

构造方法:

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

反序列化对象的方法:

Object readObject():从ObjectInputStream读取一个对象

代码:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
public class ObjectInputStreamDemo {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //ObjectInputStream(InputStream in):创建从指定的InputStream读取的ObjectInputStream
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("fos.txt"));
        //Object readObject():从ObjectInputStream读取一个对象
        Object obj = ois.readObject();
        Student s = (Student) obj;
        System.out.println(s.getName() + "," + s.getAge());
        //释放资源
        ois.close();
    }
}

运行结果:

0fcf131823894e0c88539e755077bdde.png

目录
相关文章
|
1月前
|
JSON Java API
GSON 泛型对象反序列化解决方案
GSON 泛型对象反序列化解决方案
|
9月前
|
存储 JSON 运维
PowerShell / 运维PowerShell 对象的序列化和反序列化
本文介绍Powershell中如何实现对象的序列化和反序列化。
95 0
|
23小时前
|
存储 JSON 缓存
Java中的对象序列化与反序列化:实现与应用
Java中的对象序列化与反序列化:实现与应用
|
1月前
对象数组序列化和反序列化
对象数组序列化和反序列化
21 1
|
1月前
|
分布式计算 Java 大数据
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
64 0
|
1月前
|
存储 JSON 安全
Python中对象到文件的序列化和反序列化
【4月更文挑战第2天】在Python编程中,序列化和反序列化是处理对象与文件之间转换的重要技术。序列化是将对象状态转换为可以存储或传输的形式的过程,通常是将对象转换为字节流。反序列化则是将序列化后的形式转换回对象的过程。在Python中,我们可以使用`pickle`模块来轻松地实现对象的序列化和反序列化。
|
1月前
|
JSON Android开发 数据格式
android 使用GSON 序列化对象出现字段被优化问题解决方案
android 使用GSON 序列化对象出现字段被优化问题解决方案
|
9月前
|
NoSQL Java Redis
[已解决]报异常java.io.InvalidClassException的解决方法|对象序列化实现Serializable会出现java.io.InvalidClassException的异常
[已解决]报异常java.io.InvalidClassException的解决方法|对象序列化实现Serializable会出现java.io.InvalidClassException的异常
|
1月前
|
缓存 NoSQL Java
Spring Data Redis对象缓存序列化问题
在使用 Redis 时,有没有遇到同我一样,对象缓存序列化问题的呢?
85 6
Spring Data Redis对象缓存序列化问题
|
1月前
|
vr&ar
MFC序列化及反序列化对象
MFC序列化及反序列化对象
24 0