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


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


    網站導航:
     
    主站蜘蛛池模板: 国产成人免费爽爽爽视频| 色在线亚洲视频www| 在线看片人成视频免费无遮挡| 成人无码区免费A∨直播| 亚洲人成网站在线播放2019| 亚洲色欲色欲综合网站| 中文字幕在线亚洲精品| 日日操夜夜操免费视频| 久久午夜免费视频| 午夜免费福利片观看| 成人一区二区免费视频| 高清免费久久午夜精品| 色偷偷亚洲第一综合| 中文字幕乱码亚洲精品一区| 亚洲人成网网址在线看| 精品日韩亚洲AV无码一区二区三区| 亚洲线精品一区二区三区| 亚洲AV无码乱码在线观看| 日韩高清在线免费看| 成年女人毛片免费视频| av免费不卡国产观看| 99re6免费视频| 亚洲免费视频网站| 免费人成毛片动漫在线播放| www.xxxx.com日本免费| 免费播放国产性色生活片| 国产精品亚洲专区无码不卡| 亚洲大尺度无码无码专线一区| 亚洲一卡2卡3卡4卡乱码 在线| 亚洲一级高清在线中文字幕| 亚洲专区中文字幕| 亚洲一区免费视频| 中文字幕精品三区无码亚洲| 亚洲人成网亚洲欧洲无码| 亚洲欧美黑人猛交群| 亚洲精品乱码久久久久蜜桃 | av网站免费线看| 一本久久免费视频| 91视频免费观看高清观看完整| 国内精品99亚洲免费高清| 成全在线观看免费观看大全|