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

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

Javaオブジェクトは、将来のアクセスのためにファイルに書き込むことができます。これはSerializationと呼ばれます。 これを行うには、オブジェクトをファイルに書き込むためのSerializable+`interface, and use `+ObjectOutputStreamを実装する必要があります。

FileOutputStream fout = new FileOutputStream("c:\\temp\\address.ser");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(address);

1. 対象

「Address」オブジェクトを作成し、Serializableインターフェースを実装します。 このオブジェクトはファイルに書き込みます。

Address.java

package com.example.io;

import java.io.Serializable;

public class Address implements Serializable {

    private static final long serialVersionUID = 1L;

    String street;
    String country;

    public void setStreet(String street) {
        this.street = street;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getStreet() {
        return this.street;
    }

    public String getCountry() {
        return this.country;
    }

    @Override
    public String toString() {
        return new StringBuffer(" Street : ")
                .append(this.street).append(" Country : ")
                .append(this.country).toString();
    }

}

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

このクラスは、「Address」オブジェクトとその変数値(「wallstreet」、「united state」)をc:\temp\address.serという名前のファイルに書き込みます。

WriteObject.java

package com.example.io;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class WriteObject {

    public static void main(String args[]) {

        WriteObject obj = new WriteObject();

        Address address = new Address();
        address.setStreet("wall street");
        address.setCountry("united state");

        obj.serializeAddress(address);

    }

    public void serializeAddress(Address address) {

        FileOutputStream fout = null;
        ObjectOutputStream oos = null;

        try {

            fout = new FileOutputStream("c:\\temp\\address.ser");
            oos = new ObjectOutputStream(fout);
            oos.writeObject(address);

            System.out.println("Done");

        } catch (Exception ex) {

            ex.printStackTrace();

        } finally {

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

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

        }
    }

    public void serializeAddressJDK7(Address address) {

        try (ObjectOutputStream oos =
                new ObjectOutputStream(new FileOutputStream("c:\\temp\\address2.ser"))) {

            oos.writeObject(address);
            System.out.println("Done");

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

    }

}

Note
how to read the saved object from file – Javaに関するこの記事をお読みください。