qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          JAVA筆記——序列化

            所謂的對象序列化(在很多地方也被成為串行化),是指將對象轉換成二進制數據流的一種實現手段。通過將對象序列化,可以方便地實現對象的傳輸及保存。

            在Java中提供有ObjectInputStream與ObjectOutputStream這兩個類用于序列化對象的操作。這兩個類是用于存儲和獨缺對象的輸入輸出流類,只要把對象中的所有成員變量都存儲起來,就等于保存了這個對象,之后從保存的對象之中再將對象讀取進來就可以繼續使用此對象。ObjectInputStream類與ObjectOutputStream類,用于幫助開發者完成保存和讀取對象成員變量取值的過程,但要求讀寫或存儲的對象必須實現了Serializable接口,但Serializable接口中沒有定義任何方法,僅僅被用作一種標志,已被編譯器作特殊處理。

            下面是對象的序列化范例:

           import java.io.* ;
           public class Person implements Serializable
           {
            private String name ;
            private int age ;
            public Person(String name,int age)
            {
             this.name = name ;
             this.age = age ;
            }
            public String toString()
            {
             return " 姓名:"+this.name+",年齡:"+this.age ;
            }
           };

            這個類實現了Serializable接口,所以此類的對象可序列化。下面的范例使用ObjectOutputStream與ObjectInputStream將Person類的對象保存在文件之中:

           import java.io.*;
           public class SerializableDemo
           {
            public static void main( String args[] ) throws Exception
            {
             File f = new File("SerializedPerson") ;
             serialize(f);
             deserialize(f);
            }
           
            // 以下方法為序列化對象方法
            public static void serialize(File f) throws Exception
            {
             OutputStream outputFile = new FileOutputStream(f);
             ObjectOutputStream cout = new ObjectOutputStream(outputFile);
             cout.writeObject(new Person("張三",25));
             cout.close();
            }
            // 以下方法為反序列化對象方法
            public static void deserialize(File f) throws Exception
            {
             InputStream inputFile = new FileInputStream(f);
             ObjectInputStream cin = new ObjectInputStream(inputFile);
             Person p = (Person) cin.readObject();
             System.out.println(p);
            }
           }

            在程序中聲明了一個deserialize()方法,此方法用于從文件中讀取已經保存的對象。

            另外,如果不希望類中的某個屬性被序列化,可以在聲明屬性之前加上transient關鍵字。用這個關鍵字修飾的屬性沒有被保存下來,輸出時,將輸出默認值。

          posted on 2013-09-03 10:46 順其自然EVO 閱讀(271) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2013年9月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 青州市| 丰顺县| 托里县| 公安县| 栾城县| 九龙县| 昌吉市| 嘉禾县| 云阳县| 公安县| 襄樊市| 永顺县| 平塘县| 梧州市| 青川县| 唐河县| 海丰县| 绥江县| 江北区| 鄂州市| 阿拉善右旗| 阿克苏市| 玉龙| 阳西县| 正镶白旗| 综艺| 新密市| 竹北市| 小金县| 稷山县| 江油市| 桦甸市| 夹江县| 礼泉县| 龙口市| 襄樊市| 九龙县| 成都市| 师宗县| 米脂县| 桐梓县|