「Java」Serializableでオブジェクトをバイナリファイルに書き込む方法
構文
1.public final void writeObject(Object obj)throws IOException
指定されたオブジェクトをObjectOutputStreamに書き込みます。
パラメータ:obj – 書き込まれるオブジェクト
2.public final Object readObject() throws IOException,ClassNotFoundException
ObjectInputStreamからオブジェクトを読み込みます。
使用例
package com.arkgame.bat;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
//Serializableを実装
public class UserInfo implements Serializable {
private static final long serialVersionUID = 1L;
private String username;
private int age;
// ファイルパス
private static String DIR_PATH = "C:\\study\\arkgame\\";
public static void main(String[] args) throws IOException {
// UserInfoインスタンスを生成
UserInfo userInfo = new UserInfo();
userInfo.username = "yamda";
userInfo.age = 35;
// 対象ファイル
String fileName = DIR_PATH + "test.dat";
// オブジェクトuserInfoをファイルに出力
writeObj(fileName, userInfo);
// ファイルからオブジェクトを読み込む
UserInfo obj = readObj(fileName);
System.out.println("バイナリファイルからオブジェクトを読み込む結果");
System.out.println("ユーザ名:" + obj.username);
System.out.println("年齢:" + obj.age);
}
// オブジェクトをファイルに出力関数
public static void writeObj(String fileName, UserInfo obj) throws IOException {
FileOutputStream fost = null;
ObjectOutputStream ops = null;
try {
fost = new FileOutputStream(fileName);
ops = new ObjectOutputStream(fost);
// オブジェクトをObjectOutputStreamに書き込む
ops.writeObject(obj);
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
ops.flush();
ops.close();
}
System.out.println("オブジェクトをファイルに出力しました");
}
// ファイルから取り込んで、オブジェクトを取得
public static UserInfo readObj(String fileName) {
FileInputStream fis = null;
ObjectInputStream ois = null;
UserInfo retObject = null;
try {
fis = new FileInputStream(fileName);
ois = new ObjectInputStream(fis);
// ObjectInputStreamからオブジェクトを読み込む
retObject = (UserInfo) ois.readObject();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
}
//オブジェクトを返す
return retObject;
}
}
結果
オブジェクトをファイルに出力しました
バイナリファイルからオブジェクトを読み込む結果
ユーザ名:yamda
年齢:35