본문 바로가기

자바 DB 연동/네트워크

객체 직렬화 Serializable


import java.io.EOFException;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;


class MyData implements Serializable {

private static final long serialVersionUID = 1L;

private String hak, name;

private int score;

private transient int age;

// 직렬화 대상에서 제외 되는것

//  static, transient 키워드가 붙은 변수, 모든 메소드

public MyData() {

}

public MyData(String hak, String name, int score, int age) {

this.hak=hak;    this.name=name;

this.score=score;   this.age=age;

}


public String getHak() {

return hak;

}


public void setHak(String hak) {

this.hak = hak;

}


public String getName() {

return name;

}


public void setName(String name) {

this.name = name;

}


public int getScore() {

return score;

}


public void setScore(int score) {

this.score = score;

}


public int getAge() {

return age;

}


public void setAge(int age) {

this.age = age;

}

}


public class Test2 {

public static void main(String[] args) {

try {

FileOutputStream fos=new FileOutputStream("data.txt");

ObjectOutputStream oos=new ObjectOutputStream(fos);

oos.writeObject(new MyData("111", "우리", 50, 10));

oos.writeObject(new MyData("222", "나라", 60, 80));

oos.writeObject(new MyData("333", "대한", 70, 90));

oos.close();

fos.close();

FileInputStream fis=new FileInputStream("data.txt");

ObjectInputStream ois=new ObjectInputStream(fis);

MyData ob=null;

while(true) {

ob=(MyData)ois.readObject();

if(ob==null) break;

System.out.println(ob.getHak()+":"+

       ob.getName()+":"+ob.getScore()+":"+

ob.getAge());

}

ois.close();

fis.close();

} catch (EOFException e) {

// ObjectInputStream 은 더이상 읽을 자료가 없으면

//            EOFException 이 발생

} catch (Exception e) {

System.out.println(e.toString());

}

}

}