개발 공부중

InputStream/OutputStream를 이용해서 화면 저장하기 본문

JAVA

InputStream/OutputStream를 이용해서 화면 저장하기

개발자 leelee 2023. 1. 16. 01:12
  • 객체 직렬화 (object serialization)
    • Java.io.Serializable 인터페이스
    • 실행 시간에 유지하고 있던 객체 내부의 정보과 객체 자신의 정보를 어디엔가 기록해 놓고 나중에 필요한 시기에 다시 볼 수 있는 방법을 제공하는 것
    • 객체의 내용을 파일 혹은 네트워크를 통하여 byte stream으로 입출력한다.
    • 객체를 저장장치(파일, DB)등에 저장, 검색, 로딩할 수 있도록 함으로서 객체의 영속성을 제공한다.
    • java.lang.Object : 직렬화 x, 객체를 스트림으로 보낼 수 없다
    • java.lang.String: 직렬화 o, 객체를 스트림으로 보낼 수 있다.
    • 직렬화를 구현한 창을 스트림으로 다른 컴퓨터에 보내는 것이 가능하다.
    • static 필드, transient 필드는 사용불가
    • 직렬화의 과정은 인스턴스 변수의 값을 저장하는 일으로, 인스턴스 변수가 다른 객체를 참조하는 참조형 변수일 경우 그 변수가 가리키는 객체 또한 직렬화 되어야한다.
    • InputStream : 객체를 쓸 때
    • OutputStream : 객체를 읽을 때
AwtTest.java

import java.awt.Frame;
import java.awt.TextArea;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;

public class AwtTest extends Frame {
	
	TextArea view = new TextArea();
	
	//윈도우가 생성될 때 가운데 위치시킴
	public AwtTest() {
		add(view, "Center");
	}

	public static void main(String[] args) {
		Frame f = null;
		try {
			//파일이 있으면 객체직렬화로 저장된 윈도우를 읽어옴
			FileInputStream inFile = new FileInputStream("AwtTest.dat"); // 최초 실행하면 파일이 없으니까 catch문으로 빠짐
			ObjectInput in = new ObjectInputStream(inFile);
			f = (Frame)in.readObject();
		}catch(IOException ioe) {
			//파일이 없다면(최초실행되는 경우) 500, 300짜리 윈도우 생성
			f = new AwtTest();
			f.setSize(500,300);
		}catch(ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		//윈도우 종료 이벤트 핸들러 처리
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				try {
					FileOutputStream outFile = new FileOutputStream("AwtTest.dat");
					ObjectOutput out = new ObjectOutputStream(outFile);
					out.writeObject(we.getWindow());
					out.close();
					System.exit(0);
					
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
		f.setVisible(true); // 윈도우 화면을 보이게함
	}
}

 

아래는 실행 결과화면

창을 닫으면 AwtTest.dat 파일이 생김

열어보면 입력한 내용이 저장되어 있는 걸 확인할 수 있음

AwtTest.java 파일을 다시 실행하면 창을 닫은 그 상태로 뜨는 걸 확인할 수 있음

 

Comments