<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 騎豬闖天下 閱讀(573) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲αⅴ无码乱码在线观看性色 | 无码精品人妻一区二区三区免费看| 精品无码国产污污污免费| 亚洲免费二区三区| 在线精品一卡乱码免费| 亚洲mv国产精品mv日本mv| 中文字幕无码不卡免费视频| 亚洲国产最大av| 麻豆精品国产免费观看| 久久久久亚洲AV无码去区首| 国产一级淫片a视频免费观看| 深夜久久AAAAA级毛片免费看| 亚洲真人无码永久在线| 在线观看免费无码专区| 日韩亚洲Av人人夜夜澡人人爽| 亚洲成人免费网址| 亚洲人成无码网站在线观看| 麻豆成人精品国产免费| 国产美女视频免费观看的网站| 国产亚洲精品va在线| 久久免费看黄a级毛片| 亚洲熟妇无码AV| 亚洲精品尤物yw在线影院| 蜜臀91精品国产免费观看| 亚洲av无码专区在线观看亚| 国产在线不卡免费播放| 青柠影视在线观看免费| 亚洲精品国产成人中文| 国产伦精品一区二区三区免费迷| 国产精品无码永久免费888| 亚洲av日韩av不卡在线观看| 中国在线观看免费国语版| 免费看黄网站在线看| 亚洲无线电影官网| 暖暖日本免费在线视频| 免费一级毛片在线播放视频| 中文字幕亚洲精品无码| 自拍偷自拍亚洲精品第1页| 国色精品卡一卡2卡3卡4卡免费 | 中文字幕在线免费看线人| 亚洲国产成人手机在线电影bd|