「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

Java

Posted by arkgame