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

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

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

    騎豬闖天下

    J2ME隨筆,記錄成長的腳步

    統(tǒng)計

    留言簿(3)

    閱讀排行榜

    評論排行榜

    [J2ME-原創(chuàng)] RMS 序列化反序列化的用法

            RMS中經(jīng)常用到格式轉(zhuǎn)換,即序列化反序列化,經(jīng)常混淆,現(xiàn)在似乎搞明白了,但總還是感覺沒有徹底的理解底層的一些東西,雖然不是徹底的理解,還是現(xiàn)單獨開篇,把已經(jīng)理解的給與整理,以備后用,同時歡迎高手指點下ByteArrayOutputStrema、DataOutputStream的真正區(qū)別,本質(zhì)性的,最好能仔細的說明下,為什么需要轉(zhuǎn)換兩次。小結(jié)如下:

    1.    格式轉(zhuǎn)換的序列化反序列化
    package PhoneBook;

    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;

    public class BookAccount {

        
    private String userName = "";
        
    private String mobilePhone = "";
        
    private String email = "";
        
    private String phone = "";
        
        
    public BookAccount (String userName, String mobilePhone, String phone, String email){
            
    this.userName = userName;
            
    this.mobilePhone = mobilePhone;        
            
    this.phone = phone;
            
    this.email = email;
        }

        
        
    public BookAccount() {
            
    // 自動生成的構(gòu)造函數(shù),好像沒有用處
        }

        
        
    //獲得Email
        public String getEmail(){
            
    return email;
        }

        
        
    //設置Email
        public void setEmail(String email){
            
    this.email = email;
        }

        
        
    //獲得移動電話號碼
        public String getMobilePhone(){
            
    return mobilePhone;
        }

        
        
    //設置移動電話號碼
        public void setMobilePhone(String mobilePhone){
            
    this.mobilePhone = mobilePhone;
        }

        
        
    //獲得家庭電話號碼
        public String getPhone(){
            
    return phone;
        }

        
        
    //設置家庭號碼
        public void setPhone(String phone){
            
    this.phone = phone;
        }

        
        
    //獲得姓名
        public String getUserName(){
            
    return userName;
        }

        
        
    //設置姓名
        public void setUserName(String userName){
            
    this.userName = userName;
        }

        
        
    /**
         * 1.Data指的是Java的基本數(shù)據(jù)類型和String。基本數(shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。
         * 2.baos作為參數(shù)傳送給構(gòu)造器,這樣就可以對基本數(shù)據(jù)類型以及String進行讀寫操作
         * 3.關于流的概念參考筆記第一篇。
         
    */

        
        
    //把記錄卡片中4個屬性字符串 轉(zhuǎn)換為 字節(jié)數(shù)組
        public byte[] serialize() throws IOException {   
            
            
    //創(chuàng)建字節(jié)數(shù)組輸出流
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            
    //創(chuàng)建數(shù)據(jù)輸出流,將數(shù)據(jù)(java基本數(shù)據(jù)類型和String) 寫入指定基礎輸出流, 
            
    //即:DataOutputStream 但是RMS是以字節(jié)數(shù)組存儲的,所以要轉(zhuǎn)換成字節(jié)數(shù)組。
            DataOutputStream dos = new DataOutputStream(baos);
            
            
    //根據(jù)所要儲存的數(shù)據(jù)格式分別存入緩沖區(qū)內(nèi)
            dos.writeUTF(userName);
            dos.writeUTF(mobilePhone);        
            dos.writeUTF(phone);
            dos.writeUTF(email);
            
            baos.close();
            dos.close();
            
            
    //復制內(nèi)存中的數(shù)據(jù),以字節(jié)數(shù)組的形式返回此輸出流的當前內(nèi)容
            return baos.toByteArray();      
        }

        
        
    //把字節(jié)數(shù)組 轉(zhuǎn)換為 記錄卡片上的四個屬性的字符串
        public static BookAccount deserialize(byte[] data) throws IOException {
            
            ByteArrayInputStream bais 
    = new ByteArrayInputStream(data);
            DataInputStream dis 
    = new DataInputStream(bais);
            
    //實例化一個對象
            BookAccount account = new BookAccount();
            
            
    //按照存儲數(shù)據(jù)的順序,把字節(jié)數(shù)組轉(zhuǎn)換成數(shù)據(jù),順序一定一致。
            account.userName = dis.readUTF();        
            account.mobilePhone 
    = dis.readUTF();
            account.phone 
    = dis.readUTF();
            account.email 
    = dis.readUTF();
            
            
    //釋放資源
            bais.close();
            dis.close();
            
            
    //返回一個account對象        
            return account;      
        }

        
        
    /**
         * 2進制數(shù)據(jù)和字符串的匹配函數(shù)
         * matches方法的使用,下面單獨介紹。
         
    */

        
    public static boolean matches(byte[] data, String userName) throws IOException{
            ByteArrayInputStream bais 
    = new ByteArrayInputStream(data);
            DataInputStream dis 
    = new DataInputStream(bais);
            
    try{
                
    if ( (dis.readUTF() ).equals(userName) )
                
    return true;            
            }
    catch (IOException e){
                e.printStackTrace();
            }
            
            
    return false;        
        }


    }



    <End>

    posted on 2008-08-30 21:20 騎豬闖天下 閱讀(573) 評論(0)  編輯  收藏


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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 色偷偷亚洲第一综合网| 亚洲精品无码久久久久秋霞| 亚洲AV永久无码精品一百度影院| 亚洲精彩视频在线观看| 国产成人精品日本亚洲语音| 免费高清在线影片一区| 亚洲AV午夜福利精品一区二区| 国产精品九九久久免费视频 | 国产成人亚洲精品青草天美| 香蕉大伊亚洲人在线观看| 一本岛v免费不卡一二三区| 精品无码国产污污污免费网站| 国产又长又粗又爽免费视频| 久久亚洲私人国产精品| 老子影院午夜伦不卡亚洲| 亚洲成a人一区二区三区| 亚洲制服丝袜在线播放| 国产精品免费福利久久| 亚洲男人天堂2020| 亚洲日韩一中文字暮| 日本a级片免费看| 亚洲小说图区综合在线| 免费国产黄网站在线观看视频 | 久久免费香蕉视频| 色吊丝永久在线观看最新免费| 亚洲A∨精品一区二区三区下载| 午夜国产精品免费观看 | 不卡视频免费在线观看| 国产公开免费人成视频| 国产成人亚洲综合一区| 国产免费变态视频网址网站| fc2成年免费共享视频18| 亚洲综合在线观看视频| 又黄又爽又成人免费视频| 国产亚洲精品精品精品| 精品国产精品久久一区免费式| 一级一级一级毛片免费毛片| 亚洲人成在线电影| 在线美女免费观看网站h| 亚洲乱码中文字幕在线| 区久久AAA片69亚洲|