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)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 正蓝旗| 玉屏| 白沙| 东明县| 芜湖市| 图木舒克市| 宾阳县| 库尔勒市| 东平县| 新巴尔虎左旗| 普兰店市| 武川县| 合肥市| 金门县| 如东县| 彭泽县| 闻喜县| 姜堰市| 铁力市| 庄河市| 渭南市| 琼结县| 石棉县| 石狮市| 高邑县| 揭东县| 襄樊市| 军事| 麻城市| 林芝县| 临清市| 保山市| 鄂尔多斯市| 太和县| 阳春市| 临安市| 日照市| 泰宁县| 黑龙江省| 合山市| 会同县|