객체를 읽고 쓰는 클래스들

 

객체를 파일에 읽고 쓰기 위해서는 ObjectInputStream 클래스와 ObjectOutputStream 클래스를 사용해야 합니다.

 

ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("output.dat"));

 

선언 후 out.writeObject(객체)메소드를 통해 객체를 출력할 수 있습니다.

 

이 메소드는 직렬화 가능 객체(serializable object)만 출력할 수 있습니다.

여기서 직렬화(serialization)란 객체를 스트림으로 만드는 것을 의미합니다.

사용할 클래스가 직렬화가 가능한지 여부는 API(http://docs.oracle.com/javase/7/docs/api/)를 확인해보면 알 수 있습니다.

 

 

GregorianCalender클래스를 이용하여 객체를 파일에 저장하는 ObjectOutputEx.java

import java.io.*;
import java.util.*;

class ObjectOutputEx {
	public static void main(String args[]){
		ObjectOutputStream out = null;
		try{
			out = new ObjectOutputStream(new FileOutputStream("output3.dat"));
			out.writeObject(new GregorianCalendar(2013,9,29));
			//month 데이터는 한달을 뺌.
			out.writeObject(new GregorianCalendar(2013,9,30));
			out.writeObject(new GregorianCalendar(2013,9,31));
			//직렬화가 가능한 클래스만 writeObject 로....할수있다
		}catch(IOException e){
			System.out.println("파일로 출력 불가");
		}finally{
			try{
				out.close();
			}catch(Exception e){
				
			}
			
		}
	}
}

 

 

선언하고 파일을 쓰는 방식은 이전과 동일합니다.

다만 GregorianCalendar 클래스에서 월에 데이터를 입력할 때는 1을 빼서 입력합니다.

( 0 = 1월 , 1 = 2월 , 2 = 3월 , 3 = 4월 , 4 = 5월 , 5 = 6월 , 6 = 7월 , 7 = 8월 , 8 = 9월 , 9 = 10월 , 10 = 11월 , 11 = 12월)

 

 

 GregorianCalender클래스를 이용하여 객체를 파일로부터 읽는 ObjectInputEx.java