Book オブジェクトを直列化してカレントディレクトリに data というファイル名で出力するプログラムです。 例外を一つずつ catch しているので長くなっていますがファイルへ出力する ObjectOutputStream オブジェクトを作成したら直列化は下の1行のみです。
out.writeObject(book);あとはストリームを flush するだけで Book オブジェクトに復元可能なファイルが作成されます。
/********************* SerializationSample.java *********************/
import java.io.*;
public class SerializationSample {
public static void main(String[] args) {
Book book = new Book("きまぐれロボット", "星新一");
ObjectOutputStream out = null;
try {
out = new ObjectOutputStream(new BufferedOutputStream(
new FileOutputStream("data")));
//このメソッドでファイルに直列化
out.writeObject(book);
out.flush();
} catch (InvalidClassException e) {
//(java.io.ObjectStreamExceptionのサブクラス)
//直列化で使用されるクラスになんらかの不具合があった場合
System.out.println("直列化に失敗 - " + e);
} catch (NotSerializableException e) {
//(java.io.ObjectStreamExceptionのサブクラス)
//直列化の対象が java.io.Serializableを実装していない場合
System.out.println("直列化に失敗 - " + e);
} catch (IOException e) {
//基本となる OutputStream が例外をスローした場合
System.out.println("直列化に失敗 - " + e);
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {}
}
}
}
}
/**************************** Book.java ****************************/
public class Book implements java.io.Serializable {
protected String title;
protected String author;
public Book() {}
public Book(String title, String author) {
this.title = title;
this.author = author;
}
//--------------------------------------------------------------------
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
//--------------------------------------------------------------------
public String toString() {
return "Book title:" + title + " author:" + author;
}
}