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に関するこの記事をお読みください。