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


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


    網站導航:
     
    主站蜘蛛池模板: 一级特黄特色的免费大片视频| 亚洲an日韩专区在线| 日亚毛片免费乱码不卡一区| 永久黄网站色视频免费直播| 亚洲heyzo专区无码综合| 国产成人免费a在线资源| 国产亚洲蜜芽精品久久| 亚洲欧洲日产国码一级毛片| h视频在线免费观看| 亚洲午夜国产精品无码老牛影视 | 免费一级国产生活片| 免费无码AV一区二区| 亚洲综合久久夜AV | 怡红院免费全部视频在线视频| 亚洲av永久无码精品漫画| 无码少妇精品一区二区免费动态| 亚洲人成电影亚洲人成9999网| 日韩欧毛片免费视频| 亚洲hairy多毛pics大全| 亚洲午夜激情视频| 99精品免费观看| 亚洲乱人伦中文字幕无码| 亚洲AⅤ永久无码精品AA | 国产精品免费一区二区三区 | 亚洲人成无码久久电影网站| 国内少妇偷人精品视频免费| 亚洲免费视频观看| 亚洲第一黄片大全| 色猫咪免费人成网站在线观看| 亚洲一区二区免费视频| 亚洲AⅤ永久无码精品AA| 亚洲一区免费观看| 自拍偷自拍亚洲精品偷一| 国产亚洲精品a在线观看app| 岛国av无码免费无禁网站| 一级毛片高清免费播放| 亚洲免费视频播放| 亚洲熟妇无码另类久久久| 色妞WWW精品免费视频| 国产午夜精品理论片免费观看| 亚洲人成片在线观看|