Monday 3 March 2008

วิธีการเก็บ Object ลง File แบบง่ายๆ (J2SE)

หลังจากหายหน้าหายตาไปหลายวัน จากที่ไปสอบมาผมก็ได้มีโอกาสมา อัพ Blog แห่งนี้ีอีกทีแล้วครับ ด้วยความที่ผมเป็นมือใหม่มากๆกับ Java และ Oracle บางทีผมหาเนื้อหามาก็อ่านแล้วไม่เข้าใจ เลยไม่อยากนำมาลงแบบผิดๆ โดยผมจะมุ่งเน้นไปที่ J2SE นะครับเพราะอย่างน้อยผมก็พอมีความรู้อยู่บ้างในเรื่องนี้

โดยผมจะอธิบายจาก SourceCode นะครับ

import java.io.*; // เป็นการนำ package java.io มาใช้ซึ่งมีตัวเก็บ object ลง file
public class WriteObject {
public static void main(String args[]){
try{
File outFile = new File("employee.dat");
FileOutputStream outFileStream = new FileOutputStream(outFile);
ObjectOutputStream outObjectStream = new ObjectOutputStream(outFileStream);
// 3 บรรทัดบนนี้ทำให้ทำการ write object ลง file ได้
outObjectStream.writeObject("String is an object");
// บรรทัดบนเป็นการ write object ลง file
outObjectStream.close();
File inFile = new File("employee.dat");
FileInputStream inFileStream = new FileInputStream(inFile);
ObjectInputStream inObjectStream = new ObjectInputStream(inFileStream);
// 3 บรรทัดบนเป็นการเปิด file เพื่อเอามาอ่านสังเกตุว่าเปลี่ยนจาก output เป็น input
String word = (String) inObjectStream.readObject();
// ต้อง casting ด้วยทุกครั้ง

inObjectStream.close();
System.out.println(word);
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}

ผมใช้ String มาประกอบคำอธิบายเพราะง่ายแกความเข้าใจโดยถามว่าทำไมถึง write String ลงได้ในภาษา Java String เป็น Object ชนิดหนึ่งดังนั้นก็เลย write ลงได้เลย เสร็จแล้วที่ยุ่งเกี่ยวกับ io ในภาษา java จะต้องมีการ try กับ catch ทุกครั้งที่เปิดหรือปิดไฟล์ โดยผมใช้ catch แบบง่ายๆคือ exception (ใหญ่สุด) ลองนำไป implement ดูนะครับ object ไหนที่เราจะนำมา write ลง file จะต้องทำการ implements Serializable ดังตัวอย่างต่อไปนี้

class Employee implements Serializable {

}

แบบนี้เราก็ทำการ write object employee ลงไปใน file ได้แล้ว มีคำถามสงสัยเขียน comment ถามได้เลยครับผมจะรีบตอบให้เร็วที่สุด

ปล. เดียว 7 มีนาคมนี้ผมก็ไม่อยู่แล้วเจอกันอีกที 25 มีนาเลยครับ (ผมไปบวช)