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

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

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

    騎豬闖天下

    J2ME隨筆,記錄成長的腳步

    統計

    留言簿(3)

    閱讀排行榜

    評論排行榜

    [J2ME-原創] RMS 序列化反序列化的用法

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

    1.    格式轉換的序列化反序列化
    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() {
            
    // 自動生成的構造函數,好像沒有用處
        }

        
        
    //獲得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的基本數據類型和String。基本數據類型包括byte、int、char、long、float、double、boolean和short。
         * 2.baos作為參數傳送給構造器,這樣就可以對基本數據類型以及String進行讀寫操作
         * 3.關于流的概念參考筆記第一篇。
         
    */

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

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

        
        
    /**
         * 2進制數據和字符串的匹配函數
         * 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 騎豬闖天下 閱讀(568) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 免费国产a理论片| 亚洲jizzjizz少妇| 中文成人久久久久影院免费观看| 亚洲成A∨人片天堂网无码| 亚洲aⅴ天堂av天堂无码麻豆| 日韩免费a级在线观看| 亚洲AV永久无码精品一福利| 国产精品视_精品国产免费| 亚洲avav天堂av在线网毛片| 国产免费啪嗒啪嗒视频看看| 尤物视频在线免费观看| 亚洲国产日韩成人综合天堂| 久久国产精品免费| 亚洲国产精品VA在线看黑人| 免费在线观看h片| 亚洲精品av无码喷奶水糖心| 波多野结衣视频在线免费观看| eeuss草民免费| 亚洲AV无码一区二区乱孑伦AS| 精品免费人成视频app| 亚洲精品国产高清在线观看| 亚洲午夜精品第一区二区8050| 免费91最新地址永久入口| 亚洲福利一区二区| 日韩免费观看一级毛片看看| 永久免费观看黄网站| 色噜噜综合亚洲av中文无码| 啦啦啦手机完整免费高清观看| 男女猛烈激情xx00免费视频| 亚洲AV无码乱码国产麻豆穿越| 麻豆视频免费播放| 男男gvh肉在线观看免费| 亚洲精品乱码久久久久久| 亚洲精品视频在线免费| 国产成人亚洲综合无| 亚洲AV无码久久精品狠狠爱浪潮| 日韩精品成人无码专区免费| 人妻18毛片a级毛片免费看| 亚洲成电影在线观看青青| 亚洲精品国产自在久久| 免费看片在线观看|