티스토리 뷰

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
ObjectSerialize  (0) 2013.07.22
FileBackup  (0) 2013.07.22
FileCopy  (0) 2013.07.22
FileDelete  (0) 2013.07.22
댓글
댓글쓰기 폼