Javaでファイルにオブジェクトを書き込む方法
Javaオブジェクトは将来のアクセスのためにファイルに書き込むことができます。これはhttps://en.wikipedia.org/wiki/Serialization[Serialization]と呼ばれます。これを行うには、
Serializable`インターフェースを実装し、
ObjectOutputStream`を使ってオブジェクトをファイルに書き込む必要があります。
FileOutputStream fout = new FileOutputStream("c:\\temp\\address.ser");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(address);
1.オブジェクト
「Address」オブジェクトを作成し、「Serializable」インタフェースを実装します。
このオブジェクトはファイルに書き込む予定です。
Address.java
package com.mkyong.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”オブジェクトを書き、 `c:\\ temp \\ address.ser`というファイルに変数値(” wall street “、” united state “)を書き込みます。
WriteObject.java
package com.mkyong.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();
}
}
}
参考文献
-
https://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html
[ObjectOutputStream
オブジェクトの直列化]。リンク://java/try-with-resources-example-in-jdk-7/[try-with-resources]
JDK 7の例]
io
java.io
ファイル内のオブジェクト
リンク://タグ/書き込みオブジェクト/[書き込みオブジェクト]