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-08-30 09:46 順其自然EVO 閱讀(197) 評論(0)  編輯  收藏


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


          網站導航:
           
          <2013年8月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 南昌市| 富锦市| 景洪市| 固阳县| 宕昌县| 建阳市| 南皮县| 兴义市| 天津市| 金华市| 四会市| 长宁县| 类乌齐县| 宁阳县| 蒙山县| 华池县| 瓮安县| 恩平市| 仙桃市| 邹平县| 大庆市| 若羌县| 昌宁县| 海宁市| 察哈| 襄城县| 海兴县| 富宁县| 明水县| 庆城县| 邵武市| 个旧市| 东港市| 南丹县| 手机| 古交市| 广丰县| 海口市| 临沧市| 凤山市| 祁连县|