Java将对象保存到文件中/从文件中读取对象的方法

Java将对象保存到文件中/从文件中读取对象的方法可以通过序列化(Serialization)实现。Serialization是将Java对象转换成字节序列以便将其存储在文件、传输或在网络上进行分享的过程。Java序列化机制可以确保序列化的对象的完整性。以下是保存/读取对象的方法。

将Java对象保存到文件中

首先,需要将Java对象序列化保存到文件中,该过程需要以下步骤:

  1. 构造一个实现Serializable接口的对象
  2. 创建一个ObjectOutputStream对象,该对象可以将Java对象转换成字节序列
  3. 使用writeObject()方法写入该对象
  4. 调用close()方法关闭ObjectOutputStream

以下是一个保存对象到文件的示例:

public class SaveObjectToFile {
    public static void main(String[] args) {
        Student s = new Student("John Doe", "Computer Science", 3.9);
        try {
            FileOutputStream fileOut = new FileOutputStream("student.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(s);
            out.close();
            fileOut.close();
            System.out.println("Serialized data is saved in student.ser");
        } catch (IOException i) {
            i.printStackTrace();
        }
    }
}

上面的示例使用了一个Student类对象,该类实现了Serializable接口。在保存对象之前,使用FileOutputStream将该文件对象写入student.ser文件。接下来,使用ObjectOutputStream将该对象序列化并写入文件。

从文件中读取Java对象

要从Java文件中读取对象,需要使用以下步骤:

  1. 创建一个FileInputStream对象和一个ObjectInputStream对象
  2. 使用readObject()方法从文件中读取对象
  3. 调用close()方法关闭ObjectInputStream

以下是一个从文件中读取Java对象的示例:

public class ReadObjectFromFile {
    public static void main(String[] args) {
        try {
            FileInputStream fileIn = new FileInputStream("student.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            Student s = (Student) in.readObject();
            in.close();
            fileIn.close();
            System.out.println("Deserialized data for " + s.getName());
        } catch (IOException i) {
            i.printStackTrace();
            return;
        } catch (ClassNotFoundException c) {
            System.out.println("Student class not found");
            c.printStackTrace();
            return;
        }
    }
}

上面的示例使用了FileInputStream和ObjectInputStream对象从student.ser文件中读取一个Student对象。这里需要注意我们需要将读取到的Object对象强制转换为Student对象。

示例

为了方便读者,这里提供一个完整的Java程序示例来演示保存/读取Java对象的过程。在这个示例中,我们创建了一个Dog类并编写了saveDog()和readDog()函数来实现将Dog对象保存到文件和从文件中读取的功能。

import java.io.*;

public class ObjectSerializer {
    public static void saveDog(Dog d) {
        try {
            FileOutputStream fos = new FileOutputStream("dog.ser");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(d);
            oos.close();
            fos.close();
            System.out.println("Dog object saved in dog.ser");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static Dog readDog() {
        Dog d = null;
        try {
            FileInputStream fis = new FileInputStream("dog.ser");
            ObjectInputStream ois = new ObjectInputStream(fis);
            d = (Dog) ois.readObject();
            ois.close();
            fis.close();
            System.out.println("Dog object loaded from dog.ser");
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return d;
    }

    public static void main(String[] args) {
        // 创建一个Dog对象并将其保存到文件中
        Dog d1 = new Dog();
        ObjectSerializer.saveDog(d1);

        // 从文件中读取Dog对象
        Dog d2 = ObjectSerializer.readDog();
        System.out.printf("The name of the dog is: %s\n", d2.getName());
    }
}

class Dog implements Serializable {
    private String name;
    private int age;
    private String breed;

    public Dog() {
        name = "Doggy";
        age = 2;
        breed = "Golden Retriever";
    }

    public String getName() {
        return name;
    }
}

运行上述示例后,可得到以下输出:

Dog object saved in dog.ser
Dog object loaded from dog.ser
The name of the dog is: Doggy

上面表明,程序正确地保存了Dog类对象,并从文件中读取了该对象。

这就是Java将对象保存到文件中/从文件中读取对象的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java将对象保存到文件中/从文件中读取对象的方法 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Springboot集成jdbcTemplate过程解析

    下面就是Springboot集成jdbcTemplate的完整攻略。 简介 jdbcTemplate是Spring框架提供的对JDBC操作的封装,可以大大减少项目中JDBC代码的编写量,提高开发效率。Springboot集成jdbcTemplate非常简单,可以通过简单的配置即可完成。 配置依赖 首先,在Springboot项目中引入jdbcTemplate…

    Java 2023年5月20日
    00
  • ASP.NET Core使用微软官方类库实现汉字转拼音

    这里详细讲解如何使用ASP.NET Core及微软官方NuGet库实现汉字转拼音。首先,先简单介绍一下所需的库。 Microsoft.AspNetCore.All:ASP.NET Core的核心库,包含了ASP.NET Core应用所需的各种组件。 Microsoft.Extensions.Configuration:ASP.NET Core配置系统的基础组…

    Java 2023年5月19日
    00
  • Java的Hibernate框架中的继承映射学习教程

    标题:Java Hibernate框架继承映射详解教程 引言:Java Hibernate框架通过继承映射,允许开发者使用面向对象编程的思想来描述和操作关系数据库中的表和数据,这种技术可以提高开发效率和可维护性。本文将详细讲解Java Hibernate框架中的继承映射学习教程,并提供两个示例代码来帮助开发者更好地掌握这种技术。 一、继承映射的概念 继承映射…

    Java 2023年5月19日
    00
  • Java调用DOS实现定时关机的实例

    假设我们已经确定要使用Java调用DOS实现定时关机的功能。下面是具体的攻略: 在Java程序中通过Runtime对象调用DOS命令 Java程序可以通过Runtime对象调用CMD命令,从而间接的调用DOS命令。示例代码如下: try { // 指定cmd命令行 String cmd = "shutdown -s -t 1800"; /…

    Java 2023年5月23日
    00
  • YII2.0框架行为(Behavior)深入详解

    下面针对”YII2.0框架行为(Behavior)深入详解”进行详细讲解,并且提供两个示例说明。 什么是行为(Behavior) 行为是 Yii 2 中一个非常重要的概念,它常常被用来实现代码复用及属性的自定义处理。通俗点来说,行为可以看作是一种类的特殊封装。在 Yii 2 中,每个行为可以封装一个函数或者一组函数。 行为的分类 可以把行为分为两种:普通行为…

    Java 2023年6月15日
    00
  • 新手初学Java面向对象

    新手初学Java面向对象攻略 Java是一门面向对象的编程语言,学习Java面向对象编程是Java学习的核心,也是初学者们必须掌握的必要技能。 以下是新手初学Java面向对象的完整攻略,内容包括理论知识和实践经验,希望对初学者们有所帮助。 一、理论知识 面向对象的概念 面向对象(Object-Oriented,简称 OO)是一种基本的程序设计思想,核心是“对…

    Java 2023年5月23日
    00
  • 深入浅析Java常用的格式化Json工具类

    深入浅析Java常用的格式化Json工具类 什么是Json JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。JSON是基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。 Jav…

    Java 2023年5月26日
    00
  • 解决Android 源码编译错误的问题

    解决Android源码编译错误的问题需要我们进行一些常见的处理方法。 1. 安装依赖包 在编译Android源码之前,我们需要安装一些依赖包,以确保编译过程中不会出错。常见的依赖包有如下几种: $ sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl z…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部