シリアライズ


シリアライズ(直列化)
シリアライズとは、ソフトウェア内部で扱っているデータを丸ごと、ファイルで保存したりネットワークで送受信することができるように変換すること。

オブジェクトの入出力はオブジェクトを再利用するため一時的にオブジェクトを保持する場合や、リモート環境にあるプログラムとソケットを利用してオブジェクトをやり取りを行う場合などに使用します。

このクラスのインスタンスシリアライズしてファイル保存してみます。
シリアライズするにはインタフェースSerializableを実装しなければなりません。

package t_nagata;

import java.io.Serializable;

public class BeSerialized implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7575789298389852364L;

	public void printMessage() {
		System.out.println(System.nanoTime());
	}
}
package t_nagata;

import java.io.*;

public class ObjectSerializer {
	public static void main(String[] args) {
		try {
			BeSerialized before = new BeSerialized();
			before.printMessage();

			// オブジェクトをファイルに保存
			ObjectOutputStream outObject = new ObjectOutputStream(
					new FileOutputStream("test.txt"));
			outObject.writeObject(before);
			outObject.close();

			// オブジェクトをファイルから呼び出す
			ObjectInputStream inObject = new ObjectInputStream(
					new FileInputStream("test.txt"));
			BeSerialized after = (BeSerialized) inObject.readObject();
			after.printMessage();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
}

test.txtの中身