[ Java ] 직열화

jiwon·2024년 2월 23일

직열화: 객체 -> byte로 형변환해서 저장하는 것
역 직열화: byte -> 객체로 바꾸는 것

객체라는 덩어리 자체를 저장할 수 없을 때,
byte로 변환해서 저장할 경우가 있음

Implements Serializable 상속받으면 알아서 직렬화 해줌


[Ex09.java]
package file;

import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class Ex09 {
	public static void main(String[] args) throws Exception{
		Ex09DTO dto = new Ex09DTO();
		dto.setName("홍길동");
		dto.setAddr("산골자기");
		
		String path = "C:/0.공유자료/0.핀테크/test/test.txt/";
		FileOutputStream fos = new FileOutputStream(path);
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		//객체 저장 (byte로) - 직렬화
		ObjectOutputStream oos = new ObjectOutputStream(bos); 
		oos.writeObject(dto);
		
		oos.close();	bos.close();	fos.close();

	}
}

[Ex09DTO.java]
package file;

import java.io.Serializable;

//직렬화 해줌
public class Ex09DTO implements Serializable {
	private String name;
	private String addr;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	
}

[Ex09_1.java]
package file;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class Ex09_01 {
	public static void main(String[] args) throws IOException, ClassNotFoundException {
		String path = "C:/0.공유자료/0.핀테크/test/test.txt/";
		FileInputStream fis = new FileInputStream(path);
		BufferedInputStream bis = new BufferedInputStream(fis);
		ObjectInputStream ois = new ObjectInputStream(bis);
	
		//byte로 되어있는 파일을 객체로 다시 불러오겠다(역직렬화) - 형변환!!
		Ex09DTO dto = (Ex09DTO) ois.readObject();
		System.out.println("name : " + dto.getName());
		System.out.println("addr : " + dto.getAddr());
		
	}
}
profile
취뽀 화이팅~

0개의 댓글