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

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

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

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

    雪山飛鵠

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

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

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

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

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

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

    a)         Java對(duì)象

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

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

    publicinterface Serializable {

    }

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

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

    Demo:

    /**

         *將對(duì)象序列化到磁盤文件中

         *@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,該類對(duì)java.io.InputStream進(jìn)一步做了封裝,這里主要使用ObjectInputStream類的readObject()方法實(shí)現(xiàn)序列化功能

    Demo:

    /**

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

         *@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對(duì)象:

    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 {

        /**

         *將對(duì)象序列化到磁盤文件中

         *@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)化為對(duì)象

         *@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{

          

           /*****************將對(duì)象序列化***************/

          

        /* 

            User user=new User();

           user.setUserId(1);

           user.setUserName("張藝謀");

           user.setUserSex("");

           user.setUserAge(50);

           TestSerializable.writeObject(user);

        */

          

           /*****************將對(duì)象序反列化***************/

          

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

           System.out.println(user);

        }

    }

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

    Feedback

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

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

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

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

    InputStream is=new FileInputStream(f);

    //ObjectOutputStream 核心類

    ObjectInputStream ois=new ObjectInputStream(is);

    return (User)ois.readObject();

    }

      回復(fù)  更多評(píng)論
      

    # re: Java序列化與反序列化 2013-08-04 19:11 張瘋格
    關(guān)了怎么傳出User對(duì)象,先要把流的對(duì)象在這個(gè)方法里賦值給一個(gè)user 再關(guān)閉  回復(fù)  更多評(píng)論
      

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

    # re: Java序列化與反序列化 2014-07-16 09:53 adad
    adadad  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 亚洲VA综合VA国产产VA中| 亚洲人成在线播放| 在线播放高清国语自产拍免费| 国产福利电影一区二区三区,免费久久久久久久精 | 污视频网站在线免费看| 亚洲大香伊人蕉在人依线| 亚洲人成网亚洲欧洲无码久久| 日本大片在线看黄a∨免费| 美女视频黄的全免费视频网站| 久久国产乱子伦精品免费不卡| 特a级免费高清黄色片| 亚洲精华液一二三产区| 亚洲人成网网址在线看| 亚洲精品福利网泷泽萝拉| 国产亚洲婷婷香蕉久久精品| 中文字幕亚洲天堂| 国产精品亚洲av色欲三区| 亚洲一区二区三区91| 亚洲日本在线免费观看| 久久久无码精品亚洲日韩蜜桃| 国产专区一va亚洲v天堂| 亚洲精品无码专区2| 亚洲国产专区一区| 亚洲 小说区 图片区 都市| 免费看国产一级片| 四虎永久在线精品免费观看地址| 日韩在线a视频免费播放| 日本不卡视频免费| 好爽好紧好大的免费视频国产 | 亚洲综合激情五月丁香六月| 亚洲人成激情在线播放| 亚洲人配人种jizz| 在线亚洲高清揄拍自拍一品区| 亚洲一区在线免费观看| 亚洲狠狠成人综合网| 亚洲中文字幕无码一去台湾| 亚洲天堂免费在线| 亚洲AV无码专区在线厂| 特级毛片免费播放| 中文字幕无线码中文字幕免费| 拍拍拍无挡免费视频网站|