前の例では、

オブジェクトをファイルに書き込む方法

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

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

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

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

このクラスは、シリアル化されたファイル

c:\\ temp \\ address.ser

(リンク://java/java-how-to-write-object-to-java/)、それを “Address”オブジェクトに変換して保存した値を出力します。

ReadObject.java

package com.mkyong.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

参考文献

オブジェクトの直列化]。リンク://java/try-with-resources-example-in-jdk-7/[try-with-resources]

JDK 7の例]