「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;
}
}
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;
}
}
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