亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

掌握 Java ObjectOutputStream:序列化、核心方法与实战示例

Java ObjectOutputStream 类

ObjectOutputStream 来自 java.io,用于写入 Java 对象供 ObjectInputStream 后续读取。继承 OutputStream,是 Java 内置序列化机制的核心。


ObjectOutputStream 工作原理

向 ObjectOutputStream 写入对象时,框架将类名、字段值、类型信息编码为二进制格式——即序列化。生成的字节流可存文件、网络传输或内存嵌入。

重要: 仅实现 java.io.Serializable 的对象可序列化。该标记接口告知运行时对象可安全持久化或传输。


创建 ObjectOutputStream

导入类:

import java.io.ObjectOutputStream;

关联 FileOutputStream 或其他 OutputStream:

// 写入名为 "data.bin" 的文件
FileOutputStream fileStream = new FileOutputStream("data.bin");
ObjectOutputStream objStream = new ObjectOutputStream(fileStream);

此时 objStream 可将对象序列化进 fileStream。


ObjectOutputStream 关键方法


示例 1:序列化基本类型与字符串

写入 int 和 String 到文件,再用 ObjectInputStream 读回:

import java.io.*;
public class Main {
    public static void main(String[] args) {
        int data1 = 5;
        String data2 = "This is programiz";
        try {
            // 写对象
            FileOutputStream fos = new FileOutputStream("file.bin");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeInt(data1);
            oos.writeObject(data2);
            oos.close();
            // 读对象
            FileInputStream fis = new FileInputStream("file.bin");
            ObjectInputStream ois = new ObjectInputStream(fis);
            System.out.println("Integer data :" + ois.readInt());
            System.out.println("String data :" + ois.readObject());
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

输出

Integer data :5
String data :This is programiz

示例 2:序列化自定义对象

用户定义类只需实现 Serializable:

import java.io.*;
class Dog implements Serializable {
    String name;
    String breed;
    Dog(String name, String breed) {
        this.name = name;
        this.breed = breed;
    }
}
public class Main {
    public static void main(String[] args) {
        Dog dog1 = new Dog("Tyson", "Labrador");
        try {
            // 写对象
            FileOutputStream fos = new FileOutputStream("dog.bin");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(dog1);
            oos.close();
            // 读对象
            FileInputStream fis = new FileInputStream("dog.bin");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Dog newDog = (Dog) ois.readObject();
            System.out.println("Dog Name: " + newDog.name);
            System.out.println("Dog Breed: " + newDog.breed);
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

输出

Dog Name: Tyson
Dog Breed: Labrador

Dog 必须实现 Serializable,因 ObjectOutputStream 仅能写可序列化对象。


ObjectOutputStream 其他操作

方法描述
flush()刷新缓冲输出字节到底层流
drain()刷新缓冲数据(Java 9+)
close()关闭流释放系统资源

深入参考官方 Java 文档。

java

  1. 深入理解 Java final 关键字:变量、方法与类的不可变性
  2. Java instanceof 运算符完全指南:用法、继承与接口检查
  3. 精通 Java 继承:核心概念、类型与实战示例
  4. 深入理解 Java 静态嵌套类:用法、差异与实战示例
  5. 精通 Java 匿名内部类:定义、语法与实战示例
  6. Java 单例模式详解:安全实现与使用指南
  7. 精通 Java 反射:运行时检查类、方法与字段
  8. 精通 Java ArrayList:操作、方法与最佳实践
  9. Java Stack 类全面指南:用法、核心方法与实战示例
  10. Java HashSet 类完全指南:操作、方法与集合论实战
  11. 掌握 Java 泛型:构建可复用、类型安全的代码
  12. 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除