「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