在程序中,我们需要保存一个窗口的位置,让程式在下次启动的时候,仍然保持在上一次关闭的时候的位置,或程式需要将数据库连接的配置保存下来。
  
  其中一种方法就是使用对象序列化存储。首先,简单解释一下序列化的含义:在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()等方法来获取保存的数据,然后再将窗口的高等属性配置为这个获取的值。