public class ManualSerializedHandle {
private int id;
private long type;
private float weight;
public static void main(String[] args) throws Exception {
ManualSerializedHandle msh = new ManualSerializedHandle();
msh.setManualSerializedHandle(100, 2000000, 3.14F);
System.out.println(msh.toString() + ":" + msh.getManualSerializedHandle());
msh.saveManualSerializedHandle("d:/manualserial.txt");
ManualSerializedHandle r = ManualSerializedHandle.restoreManualSerializedHandle("d:/manualserial.txt");
System.out.println(r.toString() + ":" + r.getManualSerializedHandle());
}
public void setManualSerializedHandle(int id, long type, float weight) {
this.id = id;
this.type = type;
this.weight = weight;
}
public String getManualSerializedHandle() {
return id + "," + type + "," + weight;
}
public void saveManualSerializedHandle(String fileName) throws IOException {
FileWriter fw = new FileWriter(fileName);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("ManualSerializedHandle\n");
bw.write(id + "\n");
bw.write(type + "\n");
bw.write(weight + "\n");
bw.close();
}
public static ManualSerializedHandle restoreManualSerializedHandle(String filename) throws IOException{
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
String temp = br.readLine();
ManualSerializedHandle memObj = new ManualSerializedHandle();
if(temp.equals("ManualSerializedHandle")){
int i = Integer.parseInt(br.readLine());
long t = Long.parseLong(br.readLine());
float w = Float.parseFloat(br.readLine());
memObj.setManualSerializedHandle(i, t, w);
}
br.close();
return memObj;
}
}
코드출처 : jabook.org
이것은 단순히 text 파일에 클래스명과
field : value를 저장해 두고
사용하는 곳에서 위의 text 파일을 읽어들여서
클래스명과 value를 통해 새로운 객체를 생성하는 것이다.
RMI 같은 경우는 객체 그 자체를 스트림을 통해 주고받지만 이것은
완전히 다른 방식이다.
위 소스를 실행 하면
com.devyongsik.edu.stream.ManualSerializedHandle@de6ced:100,2000000,3.14
com.devyongsik.edu.stream.ManualSerializedHandle@c17164:100,2000000,3.14
이렇게 콘솔에 출력된다. 다른 객체란 얘기고... 파일을 보면
ManualSerializedHandle
100
2000000
3.14
이렇게 들어가 있게 된다.