java.io.Serializable
인터페이스를 상속받은 객체는java.io.ObjectOutputStream
을 사용하여 직렬화 진행ObjectOutputStream oos = new ObjectOutputStream(바이트출력스트림);
oos.writeObject(객체);
ObjectInputStream = new ObjectInputStream(바이트입력스트림);
객체타입 변수 = (객체타입) ois.readObject();
java.io.ObjectInputStream
을 사용하여 역직렬화T15_ObjectStreamTest
public class T15_ObjectStreamTest {
public static void main(String[] args) {
//Member 인스턴스 생성
Member mem1 = new Member("오혁", 28, "대전");
Member mem2 = new Member("이규형", 30, "경기");
Member mem3 = new Member("조승우", 40, "강원");
Member mem4 = new Member("소녜진", 25, "제주");
try {
//객체를 파일에 저장하기
//출력용 스트림 객체 생성
ObjectOutputStream oos = new ObjectOutputStream(
new BufferedOutputStream(
new FileOutputStream("d:/D_Other/memObj.bin")));
//쓰기 작업
oos.writeObject(mem1);//직렬화
oos.writeObject(mem2);//직렬화
oos.writeObject(mem3);//직렬화
oos.writeObject(mem4);//직렬화
System.out.println("쓰기 작업 완료");
oos.close();
//===========================================================
//저장한 객체를 읽어와 출력하기
//이력용 스트림 객체 생성
ObjectInputStream ois = new ObjectInputStream(
new BufferedInputStream(
new FileInputStream("d:/D_Other/memObj.bin")));
Object obj = null;
try {
while((obj = ois.readObject())!=null) {
//읽어온 데이터를 원래의 객체형으로 변환 후 사용한다.
Member mem= (Member) obj;
System.out.println("이름 : "+ mem.getName());
System.out.println("나이 : "+ mem.getAge());
System.out.println("주소 : "+ mem.getAddr());
System.out.println("-----------------------");
}
ois.close();
}catch(ClassNotFoundException ex) {
}
} catch (IOException ex) {
//더이상 읽어올 객체가 없으면 예외 발생함.
//ex.printStackTrace();
System.out.println("출력 작업 끝...");
}
}
}
회원정보 VO
class Member implements Serializable{//자바는 Serializale 인터페이스를 구현한
//클래스만 직렬화 할 수 있도록 제한하고 있음
private transient String name; //직렬화대상제외 -> 기본값으로 저장 (null)
private transient int age; //직렬화대상제외 -> 기본값으로 저장 (0)
private String addr;
public Member(String name, int age, String addr) {
super();
this.name = name;
this.age = age;
this.addr = addr;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}