본문 바로가기

강좌/JAVA I/O

JAVA I/O (자바입출력) - 객체 직렬화 (ObjectInputStream /ObjectOutputStream)

객체 직렬화는 생성한 객체를 바이트 형태로 다른 저장 장치등으로 내보내는 방법을 말한다.


예제로 확인하자.


우선 저장할 클래스를 하나 만들어 보자.



사원정보에 대한 클래스이다.

중요한것은 이 클래스를 직렬화 하겠다는것을 명시해야 하는데 이를 위해서 꼭 해당 클래스에 Serializable을 implements 받아야 한다.


그러면 사원정보 클래스를 직렬화하여 저장하는 클래스를 보자.



객체를 저장하는거지만 이것 또한 기본 바탕은 바이트 스트림이다. 따라서 저장할 파일을 지정하고 FileOutputStream 객체를 생성한 후 오브젝트 저장시 사용되는 ObjectOutputStream을 이용해서 객체 내용을 바이트 타입으로 파일로 내보낸다.

그리고 난후 writeObject(object reference)를 하면 저장 끝이다.

간단하다. 파일을 열어보면 바이트 형식으로 객체가 쓰여졌다.


그럼 잘 쓰여졌는지 확인을 하려면 읽어서 화면에 찍어보면 된다. 이때는 ObjectInputStream을 사용해서

읽을수 있다. readObject메소드를 사용하자. 하지만 해당 객체 타입으로 캐스팅 해야 한다.


emp = (Emp)ois.readObject()가 바로 이부분..


찍어보면 아래처럼 나온다. System.out.println(emp)이 부분을 -> System.out.println(emp.toString()); 적어도 상관없다.

오버라이딩 받은것 뿐이다.