今天看書學了個貌似很牛逼的東西,可以用ObjectOutputStream把對象寫入文件,可以用ObjectInputStream從文件讀取對象。
作為菜鳥,我淺顯的認為,這是個非常有用的功能。比如,打開一個應用程序,它有窗口,必然是個對象,窗口的位置,大小,還有內部控件的擺放位置,肯定是在對象中由成員屬性來設置的,如果在關閉程序之前,將這個對象寫入文件,當下次再打開這個軟件的時候,讀取這個文件中的對象,這樣,就記錄了用戶的個人習慣,是一個不錯的功能。當然,還可能通過改注冊表什麼的來實現這樣的機制。有些習慣還可以直接存儲到服務器的數據庫上,這些都是可以的。
這裡,把代碼再敲一敲,復習鞏固一下。
先寫一個最常用的Employee類,它必須實現一個Serializable接口,才能被序列化。代碼如下:
class Employee implements Serializable { private String name; private double salary; public Employee(String aName, double aSalary) { this.name = aName; this.salary = aSalary; } public String toString() { return "name = " + this.name + " salary = " + this.salary; } }
接下來主函數裡寫上調試的代碼,代碼如下:
try { 
//構造兩個對象 Employee e1 = new Employee("kross", 123); Employee e2 = new Employee("ghost", 567.55);
//打開一個對象輸出流 ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("object.txt"));
//把兩個對象一次寫入 out.writeObject(e1); out.writeObject(e2);
//打開一個對象輸入流 ObjectInputStream in = new ObjectInputStream(new FileInputStream("object.txt"));
//通過輸入流把讀到的對象傳入e3 Employee e3 = (Employee) in.readObject();
//調用下toString()方法 System.out.println(e3.toString()); //結果:name = kross salary = 123.0 } catch(IOException e) { }