next up previous contents
Next: オブジェクトを「保存」「復元」するとは? Up: Serialization Previous: Serialization

簡単なサンプル

次の例は、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メソッドを用いて、 オブジェクトの保存・復元が可能となりました。



maruyama@wakhok.ac.jp