- 객체의 데이터를 직접 제어할 수 있게 함.
- 객체직렬화를 구현한 객체에 대해서만 사용 가능
- 객체를 파일로 저장
============================================================================================================
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class ObjectSerializeTest {
private static final String FILE = "C:/Test/Hello.txt";
public static void main(String[] args) throws IOException, ClassNotFoundException {
/* 파일을 열어서 그곳에 객체를 직렬화 시켜서 저장한다. */
// 파일 출력 스트림을 연다.
FileOutputStream fos = new FileOutputStream(ObjectSerializeTest.FILE);
// 객체 스트림을 열고, 객체스트림을 통해 객체를 파일에 저장
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(new SerializableClass("Serialize Test Program", 1004));
// 스트림을 닫는다.
oos.close();
/* 직렬화 된 객체가 저장된 파일로 부터 객체를 해제시켜 원래의 객체를 복원*/
// 파일 입력 스트림으로부터 객체 입력 스트림을 연다.
FileInputStream fis = new FileInputStream(ObjectSerializeTest.FILE);
ObjectInputStream ois = new ObjectInputStream(fis);
// 객체 입력 스트림으로부터 객체를 읽어온다.
SerializableClass sc = (SerializableClass)ois.readObject();
ois.close();
/* 스트림으로부터 읽어들인 객체의 내용을 출력 원래 생성되었던 객체와 같은 값을 갖는다는 것을 알수가 있다. */
System.out.println("string : " + sc.mString);
System.out.println("int : " + sc.mInt);
}
/* 하나의 문자열과 정수를 저장하고있는 클래스
Serializable을 implements 함으로써 스트림을 통해 직렬화되고 해제되어질수 있다. */
static class SerializableClass implements Serializable{
public static String mString;
public static int mInt;
public SerializableClass(String s, int i){
this.mString = s;
this.mInt = i;
}
}
}
'프로그래밍 정리 > 자바' 카테고리의 다른 글
쓰레드의 상태 (0) | 2013.06.17 |
---|---|
ObjectOutputStream와 ObjectInputStream : transient(객체직렬화) (0) | 2013.06.07 |
StringReader와 StringWriter (0) | 2013.06.02 |
CharArrayReader와 CharArrayWriter (0) | 2013.06.02 |
PrintWriter (0) | 2013.06.02 |