<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫馨提示:您的每一次轉(zhuǎn)載,體現(xiàn)了我寫此文的意義!!!煩請您在轉(zhuǎn)載時注明出處http://m.tkk7.com/sxyx2008/謝謝合作!!!

    雪山飛鵠

    溫馨提示:您的每一次轉(zhuǎn)載,體現(xiàn)了我寫此文的意義!!!煩請您在轉(zhuǎn)載時注明出處http://m.tkk7.com/sxyx2008/謝謝合作!!!

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks

     首先解釋兩個概念,何為序列化?何為反序列化?

    序列化:將對象轉(zhuǎn)化成流的過程稱為序列化

    反序列化:將流轉(zhuǎn)化成對象的過程稱之為反序列化

    序列化與反序列化必須遵守的原則

    a)         Java對象

    java中要想使一個java對象可以實現(xiàn)序列化與反序列化,必須讓該類實現(xiàn)java.io.Serializable接口

    java.io.Serializable接口定義如下:

    publicinterface Serializable {

    }

    從上述定義中可以看到該接口中未定義任何方法,這大大的簡化了開發(fā)者

    b)      序列化主要依賴java.io.ObjectOutputStream,該類對java.io.FileOutputStream進一步做了封裝,這里主要使用ObjectOutputStream類的writeObject()方法實現(xiàn)序列化功能

    Demo:

    /**

         *將對象序列化到磁盤文件中

         *@paramo

         *@throwsException

         */

        publicstaticvoid writeObject(Object o) throws Exception{

           File f=new File("d:""user.tmp");

           if(f.exists()){

               f.delete();

           }

           FileOutputStream os=new FileOutputStream(f);

           //ObjectOutputStream 核心類

           ObjectOutputStream oos=new ObjectOutputStream(os);

           oos.writeObject(o);

           oos.close();

           os.close();

        }

    c)      反序列化主要依賴java.io.ObjectInputStream,該類對java.io.InputStream進一步做了封裝,這里主要使用ObjectInputStream類的readObject()方法實現(xiàn)序列化功能

    Demo:

    /**

         *反序列化,將磁盤文件轉(zhuǎn)化為對象

         *@paramf

         *@return

         *@throwsException

         */

        publicstatic User readObject(File f) throws Exception{

           InputStream is=new FileInputStream(f);

           //ObjectOutputStream 核心類

           ObjectInputStream ois=new ObjectInputStream(is);

           return (User)ois.readObject();

        }

    貼出完整的demo

    Java對象:

    package com.io.bean;

    import java.io.Serializable;

    publicclass User implements Serializable {

       

        privateintuserId;

        private String userName;

        private String userSex;

        privateintuserAge;

        publicint getUserAge() {

           returnuserAge;

        }

        publicvoid setUserAge(int userAge) {

           this.userAge = userAge;

        }

        publicint getUserId() {

           returnuserId;

        }

        publicvoid setUserId(int userId) {

           this.userId = userId;

        }

        public String getUserName() {

           returnuserName;

        }

        publicvoid setUserName(String userName) {

           this.userName = userName;

        }

        public String getUserSex() {

           returnuserSex;

        }

        publicvoid setUserSex(String userSex) {

           this.userSex = userSex;

        }

        @Override

        public String toString() {

           returnthis.getUserId() + "   " + this.getUserName() + "   "

                  + this.getUserSex() + "    " + this.getUserAge();

        }

    }

    序列化與反序列化

    package com.io.test;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.io.InputStream;

    import java.io.ObjectInputStream;

    import java.io.ObjectOutputStream;

    import com.io.bean.User;

    publicclass TestSerializable {

        /**

         *將對象序列化到磁盤文件中

         *@paramo

         *@throwsException

         */

        publicstaticvoid writeObject(Object o) throws Exception{

           File f=new File("d:""user.tmp");

           if(f.exists()){

               f.delete();

           }

           FileOutputStream os=new FileOutputStream(f);

           //ObjectOutputStream 核心類

           ObjectOutputStream oos=new ObjectOutputStream(os);

           oos.writeObject(o);

           oos.close();

           os.close();

        }

       

        /**

         *反序列化,將磁盤文件轉(zhuǎn)化為對象

         *@paramf

         *@return

         *@throwsException

         */

        publicstatic User readObject(File f) throws Exception{

           InputStream is=new FileInputStream(f);

           //ObjectOutputStream 核心類

           ObjectInputStream ois=new ObjectInputStream(is);

           return (User)ois.readObject();

        }

       

       

        publicstaticvoid main(String[] args) throws Exception{

          

           /*****************將對象序列化***************/

          

        /* 

            User user=new User();

           user.setUserId(1);

           user.setUserName("張藝謀");

           user.setUserSex("");

           user.setUserAge(50);

           TestSerializable.writeObject(user);

        */

          

           /*****************將對象序反列化***************/

          

           User user=TestSerializable.readObject(new File("d:""user.tmp"));

           System.out.println(user);

        }

    }

    posted on 2009-11-09 10:43 雪山飛鵠 閱讀(38981) 評論(7)  編輯  收藏 所屬分類: javase

    Feedback

    # re: Java序列化與反序列化[未登錄] 2012-11-16 13:26 a
    xfghfdd  回復  更多評論
      

    # re: Java序列化與反序列化[未登錄] 2012-11-16 13:26 a
    @a
    @a
    @a
    @a
    @a
    @a
      回復  更多評論
      

    # re: Java序列化與反序列化 2013-07-24 16:56 cw
    你這個一次只能序列化一行啊。如果我想把文件中的所有內(nèi)容都反序列化呢? 如何反復調(diào)用?  回復  更多評論
      

    # re: Java序列化與反序列化 2013-07-31 10:01 小彭
    為啥不關閉輸入流呢?
    publicstatic User readObject(File f) throws Exception{

    InputStream is=new FileInputStream(f);

    //ObjectOutputStream 核心類

    ObjectInputStream ois=new ObjectInputStream(is);

    return (User)ois.readObject();

    }

      回復  更多評論
      

    # re: Java序列化與反序列化 2013-08-04 19:11 張瘋格
    關了怎么傳出User對象,先要把流的對象在這個方法里賦值給一個user 再關閉  回復  更多評論
      

    # re: Java序列化與反序列化 2014-02-10 15:56 revel
    @張瘋格
    定義一下不是就可以了  回復  更多評論
      

    # re: Java序列化與反序列化 2014-07-16 09:53 adad
    adadad  回復  更多評論
      

    主站蜘蛛池模板: 亚洲一区二区三区免费| 亚洲精品福利网站| 婷婷亚洲综合五月天小说在线| 日韩不卡免费视频| 亚洲入口无毒网址你懂的| 99爱在线精品免费观看| 亚洲一区二区三区高清不卡| 久久综合图区亚洲综合图区| 亚洲视频免费在线播放| 国产成人精品亚洲日本在线| 亚洲AV日韩AV高潮无码专区| 免费可以看黄的视频s色| 黄色网址在线免费| 亚洲日本香蕉视频观看视频| 全黄性性激高免费视频| 成人性做爰aaa片免费看| 亚洲国产亚洲片在线观看播放| 亚洲片一区二区三区| 免费看一区二区三区四区 | 91精品免费观看| 久久亚洲中文无码咪咪爱| 亚洲精品美女久久777777| 国产成人免费在线| 国产亚洲精品2021自在线| 亚洲成AV人片在线观看无| 四虎影视www四虎免费| fc2免费人成在线| 激情吃奶吻胸免费视频xxxx| 青青草原精品国产亚洲av| 国产国产人免费视频成69大陆| 99精品全国免费观看视频..| 亚洲中文字幕无码mv| 亚洲免费观看视频| 卡一卡二卡三在线入口免费| 国产精品成人免费一区二区| 在线毛片片免费观看| 污视频在线免费观看| 在线观看亚洲免费| 日本精品久久久久久久久免费 | 久久精品免费网站网| 久久亚洲欧美国产精品|