프로그래밍 정리/자바

ObjectInputStream와 ObjectOutputStream

주누다 2013. 6. 7. 00:55
반응형

- 객체의 데이터를 직접 제어할 수 있게 함.

- 객체직렬화를 구현한 객체에 대해서만 사용 가능

- 객체를 파일로 저장


============================================================================================================


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