youtubeでリクエストいただいたので、まずはこちらにソースを作ってみました。
 リクエストありがとうございます。動画のほうは・・すみません。少しお時間ください。
 何かリクエストございましたらyoutubeのコメント欄へぜひどうぞ。
 (時間かかるかもだけど・・)
サンプル
オブジェクトをシリアライズ(直列化)して、ファイルに保存&ファイルからオブジェクトを復元します。
 コピペで使いやすいように大きく2つに分けてあります。
ライブラリ側 – オブジェクトのシリアライズをするクラス
こっちはライブラリ側です。
 ファイル名と保存したいオブジェクトをもらって、ファイルに書き込み。
 ファイル名をもらって、ファイルを読み込み、オブジェクトを復元します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class SerializeUtil {     /**      * オブジェクトの書き込み      * @param fileName 保存先のファイル名(パスもつける)      * @param o 保存するオブジェクト      * @throws IOException 書き込み時の例外      */     public static void save(String fileName, Object o) throws IOException {         //ファイルの書き込み準備         try(FileOutputStream fos = new FileOutputStream(fileName);             ObjectOutputStream oos = new ObjectOutputStream(fos)) {             //オブジェクトの書き込み(シリアライズ)             oos.writeObject(o);             oos.flush();         }     }     /**      * オブジェクトの読み込み      * @param fileName 保存したファイル名      * @return 読み込んだオブジェクト      * @throws IOException 読み込み時の例外      * @throws ClassNotFoundException オブジェクトのクラスが見つからない時の例外      */     public static Object load(String fileName) throws IOException, ClassNotFoundException {         //ファイルの読み込み準備         try(FileInputStream fis = new FileInputStream(fileName);             ObjectInputStream ois = new ObjectInputStream(fis)){             //オブジェクトの読み込み(デシリアライズ)             return ois.readObject();         }     } } | 
シリアライズするオブジェクトとライブラリを使う側のクラス
こっちは上のライブラリを使う側のクラスです。
 このサンプルでは、格納用にSaveDataクラスなるものを作って、これをファイルへ保存、その後ファイルからオブジェクトを復元しています。
 保存するクラスはもちろん別のものでも構いませんが、対象のクラスにはjava.io.Serializableを必ず実装してください。
 ただ実装といっても、このサンプルのとおり特別な記述はしなくて大丈夫です。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; public class PersistenceTest {     private static final String FILE_NAME = "c:\\work\\test.dat";     public static void main(String[] args) {         try {             //             //データの保存             //             //保存データを用意             SaveData writeData = new SaveData(1, "データ1", new Date(), 3);             //これから保存するデータを出力             System.out.println("-- 保存データ --");             System.out.println(writeData);             //保存データをシリアライズしてファイルへ書き込む             SerializeUtil.save(FILE_NAME, writeData);             //             //データの復元             //             //ファイルに保存したデータを読み込む             SaveData readData = (SaveData)SerializeUtil.load(FILE_NAME);             //復元した保存データを出力             System.out.println("-- 復元データ --");             System.out.println(readData);         } catch (Exception e) {             e.printStackTrace();         }     } } /* 保存するサンプルのクラス */ class SaveData implements Serializable {     //保存したいネタ     private int id = -1;     private String name = null;     private Date date = null;     private int stage = -1;     public SaveData(int id, String name, Date date, int stage) {         this.id = id;         this.name = name;         this.date = date;         this.stage = stage;     }     /**      * デバッグ出力用      */     @Override     public String toString() {         return "id:" + id + System.lineSeparator()              + "name:" + name + System.lineSeparator()              + "date:" + new SimpleDateFormat("yy/MM/dd HH:mm").format(date) + System.lineSeparator()              + "stage:" + stage + System.lineSeparator();     } } | 
実行結果
ファイルへ保存する前にSaveDataクラスの中身を出力。
 ファイルへ保存&ファイルから復元のあとに、復元したオブジェクトの中身を出力しています。
| 1 2 3 4 5 6 7 8 9 10 11 | -- 保存データ -- id:1 name:データ1 date:23/03/26 18:29 stage:3 -- 復元データ -- id:1 name:データ1 date:23/03/26 18:29 stage:3 | 
ちゃんと復元できてますね。
サンプルの解説
java.io.Serializableインタフェースを実装すると、オブジェクトのシリアライズ(直列化)が可能になります。
 ObjectOutputStreamでファイルに保存(シリアライズ)。保存したファイルは、ObjectInputStreamを使うと復元できます。
保存したファイルを開いてみるとわかりますが、データはバイナリ形式で保存されます。
 中身を見せたくないようなものには、向いているのではないでしょうか。
ちなみに、シリアライズとは、ざっくり言うと、そのオブジェクトが「01010111000・・・」のビットで表現できる状態にすることです。
 このサンプルでは、シリアライズしているのは1つのオブジェクトですが、複数のオブジェクトを1つのファイルにまとめて書き込むこともできます。













