1. 程式人生 > >儲存Java程式狀態及設定之物件序列化

儲存Java程式狀態及設定之物件序列化

在程式中,我們需要儲存一個視窗的位置,讓程式在下次啟動的時候,仍然保持在上一次關閉的時候的位置,或程式需要將資料庫連線的配置儲存下來。
  
  其中一種方法就是使用物件序列化儲存。首先,簡單解釋一下序列化的含義:在Java程式中,物件是存在於記憶體中的,序列化就是將這個物件在記憶體中的形態變成位元組流,然後輸入到一個文件中,這樣就將一個物件固定下來,不會隨程式的關閉而消失。我們建立一個能夠序列化的類,注意,在Java中,並不是每個類都能夠實現序列化的,要實現java.io.Serializable介面的類才能夠序列化。
  
  public class ProgramSave implements java.io.Serializable{
  
  private int height;
  
  private int width;
  
  private int left;
  
  private int top;
  
  public ProgramSave(){
  
  height=200;
  
  width=200;
  
  left=0;
  
  top=0;
  
  }
  
  public int getHeight(){
  
  return height;
  
  }
  
  public void setHeight(int hei){
  
  height=hei;
  
  }
  
  ……
  
  程式中用4個屬性來儲存程式的狀態,並且宣告多個方法來儲存和獲取屬性。上面的程式只寫了一個獲取和儲存的方法,其他的類似。
  
  當程式退出的時候,在退出前,我們要先儲存程式的狀態,將下面的方法新增到程式退出前,執行完下面的程式碼後在退出程式。
  
  //建立一個能夠序列化的物件
  
  ProgramSave save = new ProgramSave();
  
  save.setHeight(視窗的高);
  
  ……
  
  這樣將程式的狀態儲存到save這個物件中,但是,現在程式的狀態只是儲存在記憶體中,因為sava這個物件現在仍然是在記憶體中的。下面建立一個文件,並把save物件儲存到這個文件中。
  
  //建立文件物件
  
  File file = new File(“mysave.save”);
  
  file.createNewFile();
  
  //獲取文件的位元組流物件
  
  FileOutputStream bytetOut = new FileOutputStream(file);
  
  ObjectOutputStream outer = new ObjectOutputStream(bytetOut)
  
  //將save物件寫入
  
  outer.writeObject(save);
  
  outer.flush();
  
  outer.close();
  
  到此,save物件,就被儲存到文件中了。
  
  在程式啟動的時候,相反,我們要將mysave.save中的物件重新載入到記憶體中,然後獲取其中儲存的height等值,再調整視窗的位置。
  
  在視窗物件初始化的時候,載入物件。
  
  //獲取文件物件
  
  File f=new File(“mysave.save”);
  
  FileInputStream byteOut = new FileInputStream(f);
  
  ObjectInputStream out = new ObjectInputStream(byteOut);
  
  //將文件物件中的位元組流讀出來,並儲存在記憶體中的mySet物件中
  
  ProgramSave mySet = (SystemSave) out.readObject();
  
  out.close();
  
  byteOut.close();
  
  後面就能夠通過mySet.getHeight()等方法來獲取儲存的資料,然後再將視窗的高等屬性配置為這個獲取的值。

更多關於JAVA乾貨掃描微信二維碼新增好友!
在這裡插入圖片描述