1. 程式人生 > >物件流(objectInputStream 和ObjectOutputStream)

物件流(objectInputStream 和ObjectOutputStream)

一、對面序列化過程 :將記憶體中的物件通過ObjectOutputStream轉為二進位制流,儲存在硬碟檔案中

對面序列化要滿足的條件

1、物件所對應的類要實現Serializable介面

2、類的屬性同樣要實現Serializable介面

3、凡是實現Serializable介面都有一個表示序列化版本識別符號的靜態變數:

private static final long seriaVersionUID;來表示不同版本間的相容性,

如果沒有顯示定義這個靜態變數,它的值是Java執行時環境根據類的內部細節自動生成的,若類的原始碼作了修改

,seriaVersionUID可能發生變化。建議顯示宣告。 確保不同版本相同的serialVersionUID.

  1. public void text(){
  2.           File f2=new File("C:\\Users\\ASUS\\Desktop\\hello3.txt");            //儲存路徑
  3.           people p=new people("12","花花");
  4.           ObjectOutputStream f3=null;
  5.         try {
  6.             f3 = new ObjectOutputStream(new FileOutputStream(f2));
  7.               f3.writeObject(p);
  8.               f3.flush();
  9.         } catch (FileNotFoundException e) {
  10.             // TODO Auto-generated catch block
  11.             e.printStackTrace();
  12.         } catch (IOException e) {
  13.             // TODO Auto-generated catch block
  14.             e.printStackTrace();
  15.         }finally{
  16.             try {
  17.                 f3.close();
  18.             } catch (IOException e) {
  19.                 // TODO Auto-generated catch block
  20.                 e.printStackTrace();
  21.             }
  22.         }
  23.       }
  24. class people implements Serializable{
  25.     public String name;
  26.     public String arg;
  27.     public people(String name,String arg){
  28.         this.name=name;
  29.         this.arg=arg;
  30.     }
  31.     public String toString(){
  32.         return "people [name ="+name+",arg=" +arg+"]";
  33.     }
  34.     }

二、對面反序列化過程:將硬碟中的檔案通過objectInputStream轉換為相應的物件

  1. public void textInput(){
  2.          ObjectInputStream f=null;
  3.         people p=null;
  4.         try {
  5.             f = new ObjectInputStream(new FileInputStream("C:\\Users\\ASUS\\Desktop\\hello3.txt"));
  6.             p = (people)f.readObject();
  7.         } catch (FileNotFoundException e) {
  8.             // TODO Auto-generated catch block
  9.             e.printStackTrace();
  10.         } catch (ClassNotFoundException e) {
  11.             // TODO Auto-generated catch block
  12.             e.printStackTrace();
  13.         } catch (IOException e) {
  14.             // TODO Auto-generated catch block
  15.             e.printStackTrace();
  16.         }
  17.         System.out.println(p);
  18.         try {
  19.             f.close();
  20.         } catch (IOException e) {
  21.             // TODO Auto-generated catch block
  22.             e.printStackTrace();
  23.         }
  24.     }
  25.     };
  26. class people implements Serializable{
  27.     public String name;
  28.     public String arg;
  29.     public people(String name,String arg){
  30.         this.name=name;
  31.         this.arg=arg;
  32.     }
  33.     public String toString(){                               //輸出
  34.         return "people [name ="+name+",arg=" +arg+"]";
  35.     } 
  36.     }