<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)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 猫咪免费人成网站在线观看入口| 亚洲欧洲日本国产| 羞羞视频在线免费观看| 德国女人一级毛片免费| 狠狠色伊人亚洲综合网站色| 亚欧色视频在线观看免费| 亚洲视频免费播放| 18女人毛片水真多免费| 久久99亚洲网美利坚合众国| 3344免费播放观看视频| 亚洲一区二区三区久久| 韩国免费三片在线视频| 羞羞漫画登录页面免费| 亚洲一级片内射网站在线观看| www一区二区www免费| 亚洲中文字幕无码中文字在线| a级毛片视频免费观看| 久久国产亚洲观看| 天天影院成人免费观看| 亚洲综合av一区二区三区| 四虎成人精品在永久免费| 狠狠躁狠狠爱免费视频无码| 亚洲AV无码专区在线播放中文| 最近2019免费中文字幕视频三| 亚洲夂夂婷婷色拍WW47| 亚洲欧洲国产成人综合在线观看| 国产一区二区三区免费| 亚洲尹人香蕉网在线视颅| 一二三四影视在线看片免费 | 亚洲嫩模在线观看| 114一级毛片免费| 国产精品亚洲色婷婷99久久精品| 亚洲一区无码精品色| 一级毛片**不卡免费播| 久久国产成人精品国产成人亚洲| 在线观看片免费人成视频播放| 久久精品九九亚洲精品| 国产日产成人免费视频在线观看| 国产午夜精品理论片免费观看| 亚洲欧洲日本精品| 亚洲精品和日本精品|