본문 바로가기
JAVA

ObjectOutputStream / ObjectInputStream (객체 스트림, 직렬화(인터페이스 serializable)

by 소힌 2022. 1. 25.

 

1.ObjectOutputStream 

writeObject(); 

 

2.ObjectInputStream

readObject(); // readObject의 반환 타입은 Object여서 원하는 객체 타입으로 형변환해주면 된다 

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Main {
	public static void main(String[] args) {
		// MyClass my = new MyClass("문자열 정보1", 111, 222.333);
//		try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("data.bin"));) {
//			try {
//				oos.writeObject(my);// 직렬화라는 것이 가능해야 오류가 안남 // seriallizable이라는 인터페이스를 더해준다 
//			} catch (IOException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//		} catch (FileNotFoundException e1) {
//			// TODO Auto-generated catch block
//			e1.printStackTrace();
//		} catch (IOException e1) {
//			// TODO Auto-generated catch block
//			e1.printStackTrace();
//		}

		try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("data.bin"));) {
			MyClass my = (MyClass) ois.readObject();// 반환 타입은 오브젝트의 형태 // 원래 오브젝트인데 형변환 해준 것임
			System.out.println(my);
			System.out.println(my.getMtStr());
			System.out.println(my.getMyDouble());
			System.out.println(my.getMyInt());
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}