次の例は、tmpという名前のファイルに、"Today"という文字列と今日の日付を、 書き出すというものです。ファイルに文字列を書き出すのは簡単ですが、ここの書き 出しは少し違っています。日付にしても、日付の文字列を書いているのではありま せん。new Date()で生成された Date オブジェクトそのものを、ファイルに 書き出しているのです。 文字列についても、Dateオブジェクトについても、 writeObjectという一つのメソッドが使われていることに注意してください。
// Serialize today's date to a file. FileOutputStream f = new FileOutputStream("tmp"); ObjectOutput s = new ObjectOutputStream(f); s.writeObject("Today"); s.writeObject(new Date()); s.flush();
この例は、先に書き出したtmpファイルを読み込んで、元の二つのオブジェクトを 回復しようとするプログラムのサンプルです。ここでは、writeObjectにつけられた 型のキャストに注目してください。writeObjectは、ストリームの中身から、適当な オブジェクトを作り出します。
// Deserialize a string and date from a file. FileInputStream in = new FileInputStream("tmp"); ObjectInputStream s = new ObjectInputStream(in); String today = (String)s.readObject(); Date date = (Date)s.readObject();
この例のように、JDK1.1では、ObjectOutputStream/ObjectInputStreamという新しい ストリーム・クラスが導入されて、writeObject/readObjectメソッドを用いて、 オブジェクトの保存・復元が可能となりました。