Javaのファイルからオブジェクトを読み込む方法

Javaでファイルからオブジェクトを読み取る方法

前の例では、how to write an Object into a fileについて学習します。 この例では、保存されたファイルからオブジェクトを読み取る方法、またはシリアル化されたファイルを逆シリアル化する方法を学習します。

逆シリアル化プロセスはシリアル化と非常に似ています。ファイルの内容を読み取り、Javaオブジェクトに変換し直すには、ObjectInputStreamを使用する必要があります。

FileInputStream fin = new FileInputStream("c:\\temp\\address.ser");
ObjectInputStream ois = new ObjectInputStream(fin);
address = (Address) ois.readObject();

1. ファイルからオブジェクトを読み取る

このクラスは、シリアル化されたファイルc:\temp\address.serthis exampleで作成)を読み取り、それを「Address」オブジェクトに変換して戻し、保存された値を出力します。

ReadObject.java

package com.example.io;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class ReadObject {

    public static void main(String args[]) {

        ReadObject obj = new ReadObject();

        Address address = obj.deserialzeAddress("c:\\temp\\address.ser");

        System.out.println(address);

    }

    public Address deserialzeAddress(String filename) {

        Address address = null;

        FileInputStream fin = null;
        ObjectInputStream ois = null;

        try {

            fin = new FileInputStream(filename);
            ois = new ObjectInputStream(fin);
            address = (Address) ois.readObject();

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {

            if (fin != null) {
                try {
                    fin.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            if (ois != null) {
                try {
                    ois.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }

        return address;

    }

    public Address deserialzeAddressJDK7(String filename) {

        Address address = null;

        try (ObjectInputStream ois
            = new ObjectInputStream(new FileInputStream(filename))) {

            address = (Address) ois.readObject();

        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return address;

    }

}

出力

Street : wall street Country : united state