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项目使用html5的video标签完成视频播放功能

    下面是详细的讲解。 1. 引入video.js库 在静态文件目录(如:resources/static/)中引入video.js的库文件。 <link href="https://vjs.zencdn.net/7.11.4/video-js.css" rel="stylesheet" /> <scri…

    Java 2023年5月20日
    00
  • Java代码实现对properties文件有序的读写的示例

    Java代码实现对properties文件有序的读写的示例 在Java中读写properties文件是非常常见的操作,但是在默认情况下properties文件是无序的,这就会给我们的读写操作带来一定的困扰。本攻略将详细介绍Java代码如何实现对properties文件有序的读写操作。 1. 针对JDK7及以下版本的实现方式 在Java 7及以下版本中,虽然无…

    Java 2023年6月15日
    00
  • java异常继承何类,运行时异常与一般异常的区别(详解)

    Java异常继承何类 Java中所有异常都继承自java.lang.Throwable类,Throwable类分为两种:Error和Exception。Error表示虚拟机无法处理的错误,而Exception则表示正常的异常事件。 Exception又分为编译时异常和运行时异常,下面将详细说明运行时异常和一般异常的区别。 运行时异常与一般异常的区别 运行时异…

    Java 2023年5月27日
    00
  • java开发中如何使用JVisualVM进行性能分析

    完整攻略如下: 1. 什么是JVisualVM JVisualVM是Java SE平台的一个工具,用于监视本地或远程的Java程序运行状态。使用JVisualVM可以实时监控Java程序的内存、CPU、线程等实时状态,同时支持通过插件扩展功能。 2. 如何使用JVisualVM进行性能分析 2.1. 下载并安装JVisualVM JVisualVM是Java…

    Java 2023年5月26日
    00
  • Java中的二维数组的赋值与输出方式

    二维数组是指由若干个一维数组组成的数组,在Java中,可以用二维数组来表示矩阵、图像等复杂的数据结构。 二维数组赋值 在Java中赋值一个二维数组,需要遍历数组,并逐个对数组元素进行赋值。示例代码如下: int[][] arr = new int[3][4]; for (int i = 0; i < arr.length; i++) { for (in…

    Java 2023年5月26日
    00
  • redhat 5.4下安装MYSQL全过程

    安装MYSQL的完整攻略如下: 1. 安装MYSQL的依赖库 需要安装的依赖库有: gcc gcc-c++ ncurses-devel make cmake bison gcc-gfortran libtool libxml2-devel libjpeg-devel libpng-devel freetype-devel libXpm-devel libmc…

    Java 2023年5月20日
    00
  • Spring Boot配置接口WebMvcConfigurer的实现

    下面是关于“Spring Boot配置接口WebMvcConfigurer的实现”的完整攻略,包含两个示例说明。 Spring Boot配置接口WebMvcConfigurer的实现 Spring Boot提供了许多配置选项来自定义应用程序的行为。其中,WebMvcConfigurer接口提供了许多配置选项来自定义Spring MVC的行为。本文将介绍如何实…

    Java 2023年5月17日
    00
  • js布局实现单选按钮控件

    JS布局实现单选按钮控件的完整攻略主要包括以下几个步骤: 创建HTML结构,在结构中添加单选按钮控件需要的元素,如单选按钮的label和input元素。 <div id="radioGroup"> <label> <input type="radio" name="color&q…

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