「Java」Serializableでオブジェクトをバイナリファイルに書き込む方法

構文
1.public final void writeObject(Object obj)throws IOException
指定されたオブジェクトをObjectOutputStreamに書き込みます。
パラメータ:obj – 書き込まれるオブジェクト
2.public final Object readObject() throws IOException,ClassNotFoundException
ObjectInputStreamからオブジェクトを読み込みます。

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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

Java

Posted by arkgame