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 閱讀(270) 評論(0)  編輯  收藏


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


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

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 芦山县| 社会| 宁蒗| 东宁县| 临漳县| 永寿县| 涟源市| 桦川县| 阳东县| 纳雍县| 泾川县| 视频| 福建省| 资兴市| 揭阳市| 灵川县| 凤山县| 武威市| 阳新县| 句容市| 柯坪县| 渭源县| 绵阳市| 浦东新区| 龙胜| 唐河县| 北京市| 新邵县| 邢台市| 浦城县| 崇信县| 新沂市| 新龙县| 宜兰县| 荆州市| 枣庄市| 荔波县| 西充县| 革吉县| 得荣县| 镇远县|