티스토리 뷰
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class ObjectSerialize {
public static void main(String[] args) {
// TODO Auto-generated method stub
ObjectInputStream ois = null;
ObjectOutputStream oos = null;
FileInputStream fis = null;
FileOutputStream fos = null;
Data obj[] = new Data[3]; //데이터 클래스 생성
obj[0] = new Data("박문석", 44);
obj[1] = new Data("이유진", 43);
obj[2] = new Data("김태현", 42);
for (Data k : obj) {
System.out.println(k);
//toString 메소드를 오버라이드 해서
//데이터를 올바르게 출력해준다.
}
System.out.println("=======================");
System.out.println("직렬화해서 저장한 후 가져와서 출력");
System.out.println("=======================");
try {
fos = new FileOutputStream("d:\\object.dat");
oos = new ObjectOutputStream(fos);
//파일쓰기, 스트림 생성
oos.writeObject(obj[0]);
oos.writeObject(obj[1]);
oos.writeObject(obj[2]);
//스트림을 이용하여 객체의 데이터를 파일에 쓴다.
fis = new FileInputStream("d:\\object.dat");
ois = new ObjectInputStream(fis);
//파일읽기, 스트림 생성
Data temp = (Data) ois.readObject();
System.out.println(temp);
//스트림을 이용하여 객체의 데이터를
//새로운 데이터 클래스로 옮긴다.
temp = (Data) ois.readObject();
System.out.println(temp);
temp = (Data) ois.readObject();
System.out.println(temp);
//2번 더 읽는다.
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
if (fis != null)
fis.close();
if (ois != null)
ois.close();
if (fos != null)
fos.close();
if (oos != null)
oos.close();
//스트림 해제
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
}
class Data implements Serializable {
public static int bunho;
private transient int number; //직렬화에서 제외
private String name;
private int age;
static {
bunho = 0;
}
public Data() {
number = ++bunho;
name = "noname";
age = 0;
}
public Data(String name, int n) {
number = ++bunho;
this.name = name;
age = n;
}
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 int getNumber() {
return number;
}
public String toString() {
return "Data [number=" + number + ", name=" + name + ", age=" + age
+ "]";
} //데이터 표현방법(문자열타입) 재정의
}
결과 :
Data [number=1, name=박문석, age=44]
Data [number=2, name=이유진, age=43]
Data [number=3, name=김태현, age=42]
=======================
직렬화해서 저장한 후 가져와서 출력
=======================
Data [number=0, name=박문석, age=44]
Data [number=0, name=이유진, age=43]
Data [number=0, name=김태현, age=42]
'java,web study > 4주차 (7월 22일~28일)' 카테고리의 다른 글
WebSocket (0) | 2013.07.24 |
---|---|
IPDisplay (0) | 2013.07.24 |
FileBackup (0) | 2013.07.22 |
FileCopy (0) | 2013.07.22 |
FileDelete (0) | 2013.07.22 |