* 객체 직렬화란?

 객체(Object)자체를 어딘가에 저장, 기록하여 다른 프로그램(혹은 다른 클래스)에서 사용할 수 있도록 하는 것이다. 자바에서는 객체 직렬화를 이용하여 객체를 파일(바이너리)로 저장할 수 도 있고 객체 자체를 전송할 수 도 있다.

 객체 직렬화를 이용하는 방법은 직렬화 하려는 객체에 Serializable 인터페이스를 구현(implements)하여 만들 수 있다. Serializable 인터페이스는 인터페이스이나 따로 구현해야 할 것이 없으므로 implements만 하면 된다. 사용은 java.io의 ObjectOutputStream, ObjectInputStream을 이용한다.

// SerialClass.java 직렬화할 클래스 정의
import java.io.*;

public class SerialClass implements Serializable {
 
     private String name;
     private int age;
 
     public SerialClass(String _name, int _age) {
          name = _name;
          age = _age;
     }
 
     public String toString() {
          return "당신의 이름은 "+name+"이고 나이는 "+age+"입니다.";
     }
}

// Test.java   SerialClass를 SerialClass.ser 파일로 직렬화 함
import java.io.*;

public class Test {
 
     public static void main(String args[]) throws Exception {
          SerialClass serial = new SerialClass("곽민기", 20);
          SerialClass serial2 = new SerialClass("홍길동", 50);
 
          ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(
                                                                                         "SerialClass.ser"));
          out.writeObject(serial);
          out.writeObject(serial2);
          out.close();
     }
}

// Test2.java   SerialClass.ser파일로부터 SerialClass클래스로 복구
import java.io.*;

public class Test2 {
 
     public static void main(String args[]) throws Exception {
          ObjectInputStream in= new ObjectInputStream(new FileInputStream(
                                                                                 "SerialClass.ser"));
 
          SerialClass serial = (SerialClass)in.readObject();
          SerialClass serial2 = (SerialClass)in.readObject();
 
          System.out.println(serial.name);
          System.out.println(serial2.age);
     }
}

출처 : http://blog.naver.com/ykstyle2000?Redirect=Log&logNo=50012255021

+ Recent posts