Java 对象序列化:使用对象输入输出流存储用户信息
Java 对象序列化:使用对象输入输出流存储用户信息
本文将演示如何使用 Java 的对象输入输出流(ObjectInputStream 和 ObjectOutputStream)将用户信息存储到文件中,以及如何从文件中读取用户信息。
使用 Java 语言内容:
import java.io.*;
public class UserInfo {
    private String name;
    private int age;
    private String address;
    public UserInfo(String name, int age, String address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public String getAddress() {
        return address;
    }
    public static void main(String[] args) {
        UserInfo user = new UserInfo('John', 25, '123 Main St');
        try {
            // 创建对象输出流
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream('user.dat'));
            // 写入对象到文件
            oos.writeObject(user);
            // 关闭输出流
            oos.close();
            // 创建对象输入流
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream('user.dat'));
            // 读取文件中的对象
            UserInfo userFromFile = (UserInfo) ois.readObject();
            // 输出读取的对象信息
            System.out.println('Name: ' + userFromFile.getName());
            System.out.println('Age: ' + userFromFile.getAge());
            System.out.println('Address: ' + userFromFile.getAddress());
            // 关闭输入流
            ois.close();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
该程序首先创建了一个 UserInfo 对象,并将其写入到文件中,然后再从文件中读取对象并输出其信息。使用对象输出输入流可以方便地将对象写入到文件中,并在需要时从文件中读取对象。
代码说明:
- 创建 UserInfo 类: 该类用于存储用户信息,包含 name、age 和 address 属性,并提供相应的 getter 方法。
- 创建对象输出流:  ObjectOutputStream类用于将对象序列化到文件中。
- 写入对象:  writeObject()方法将 UserInfo 对象写入到文件中。
- 创建对象输入流:  ObjectInputStream类用于从文件中反序列化读取对象。
- 读取对象:  readObject()方法从文件中读取对象。
- 输出对象信息: 将读取到的用户信息输出到控制台。
注意:  为了使对象能够被序列化,需要确保类实现了 Serializable 接口。
总结: 通过使用对象输入输出流,我们可以方便地将 Java 对象存储到文件中,并在需要时从文件中读取对象。这在需要持久化数据或跨进程传递数据时非常有用。
 
原文地址: https://www.cveoy.top/t/topic/ol3E 著作权归作者所有。请勿转载和采集!