
직열화: 객체 -> 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());
}
}