Java Serializableオブジェクトを読み書きする




youtubeでリクエストいただいたので、まずはこちらにソースを作ってみました。
リクエストありがとうございます。動画のほうは・・すみません。少しお時間ください。
何かリクエストございましたらyoutubeのコメント欄へぜひどうぞ。
(時間かかるかもだけど・・)

サンプル

オブジェクトをシリアライズ(直列化)して、ファイルに保存&ファイルからオブジェクトを復元します。
コピペで使いやすいように大きく2つに分けてあります。

ライブラリ側 – オブジェクトのシリアライズをするクラス

こっちはライブラリ側です。
ファイル名と保存したいオブジェクトをもらって、ファイルに書き込み。
ファイル名をもらって、ファイルを読み込み、オブジェクトを復元します。

シリアライズするオブジェクトとライブラリを使う側のクラス

こっちは上のライブラリを使う側のクラスです。
このサンプルでは、格納用にSaveDataクラスなるものを作って、これをファイルへ保存、その後ファイルからオブジェクトを復元しています。
保存するクラスはもちろん別のものでも構いませんが、対象のクラスにはjava.io.Serializableを必ず実装してください。
ただ実装といっても、このサンプルのとおり特別な記述はしなくて大丈夫です。

実行結果

ファイルへ保存する前にSaveDataクラスの中身を出力。
ファイルへ保存&ファイルから復元のあとに、復元したオブジェクトの中身を出力しています。

ちゃんと復元できてますね。

サンプルの解説

java.io.Serializableインタフェースを実装すると、オブジェクトのシリアライズ(直列化)が可能になります。
ObjectOutputStreamでファイルに保存(シリアライズ)。保存したファイルは、ObjectInputStreamを使うと復元できます。

保存したファイルを開いてみるとわかりますが、データはバイナリ形式で保存されます。
中身を見せたくないようなものには、向いているのではないでしょうか。

ちなみに、シリアライズとは、ざっくり言うと、そのオブジェクトが「01010111000・・・」のビットで表現できる状態にすることです。
このサンプルでは、シリアライズしているのは1つのオブジェクトですが、複数のオブジェクトを1つのファイルにまとめて書き込むこともできます。