▶ ObjectInputStream & ObjectOutputStream
: 인스턴스의 저장을 위해서는 ObjectOuputStream 클래스에 정의되어 있는 다음 메소드를 호출하면된다.
public final void writeObject(Object obj) throws IOException
반대로 인스턴스의 복원을 위해서는 ObjectInputStream 클래스에 정의되어 있는 다음 메소드를 호출하면된다.
public final Object readObject() throws IOException, ClassNotFoundException
단 입출력의 대상이 되는 인스턴스의 클래스는 다음 인터페이스를 구현하거나, 다음 인터페이스를 구현하는 클래스를 상속해야 한다. 즉 직간접적으로 다음 인터페이스를 구현해야 한다.
java.io.Serailizable
인스턴스가 파일에 저장되는 과정을 가리켜, 직렬화(serializable)라 하고, 파일로부터 인스턴스가 복원되는 과정을 가리켜 역직렬화(deserializable)라 하는데, Serializable 인터페이스는 다음의 표시를 목적으로 사용된다. 때문에 추가로 정의해야 할 메소드도 존재하지 않는다.
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Circle implements Serializable {
int xPos;
int yPos;
double rad;
public Circle(int x, int y, double r) {
xPos = x;
yPos = y;
rad = r;
}
public void showCircleInfo() {
System.out.printf("[%d, %d]\n", xPos, yPos);
System.out.println("rad : " + rad);
}
}
public class ObjectSerializable {
public static void main(String[] args) throws IOException, ClassNotFoundException {
// TODO Auto-generated method stub
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Object.ser");
out.writeObject(new Circle(1,1,2.4));
out.writeObject(new Circle(2,3,4.8));
out.writeObject(new String("String implements Serializable"));
out.close();
// 인스턴스 복원
ObjectInputStream in = new ObjectInputStream(new FileInputStream("Object.ser"));
Circle cl1 = (Circle)in.readObject();
Circle cl2 = (Circle)in.readObject();
String message = (String)in.readObject();
in.close();
// 복원된 정보 출력
cl1.showCircleInfo();
cl2.showCircleInfo();
System.out.println(message);
}
}
[Java]Random Aceess (0) | 2012.09.30 |
---|---|
[Java] 직렬화 대상에서 제외 transient (0) | 2012.09.29 |
[Java]BufferedReader & BufferedWriter (0) | 2012.09.29 |
[Java]FileReader & FileWriter (0) | 2012.09.28 |
[Java]필터 스트림 (0) | 2012.09.24 |
댓글 영역