J2ME的RMS读写实现

以下代码出自http://blog.csdn.net/hellogv/,引用请注明出处!

在实现RMS的读写前,首先要注意RMS对汉字不兼容,为了解决这个这个首要问题,首先要编写以下两个成员函数:

public byte[] StringtoBytes(String Str) { // 写成字节
    byte[] STB = null;
    try {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(baos);
        dos.writeUTF(Str);
        STB = baos.toByteArray();
        baos.close();
        dos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return STB;
}

public String BytesToString(byte[] rec) { // 从字节读取内容
    ByteArrayInputStream bais = new ByteArrayInputStream(rec);
    DataInputStream dis = new DataInputStream(bais);
    String BTS=null;
    try {
        BTS=dis.readUTF();
        bais.close();
        dis.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return  BTS;
}

  有上面的成员函数,接下来,就可以实现RMS的读写:

public String Read()// 返回值就是上次保存的记录
{
    try{
    rms=RecordStore.openRecordStore("XXXX",true,RecordStore.AUTHMODE_ANY,true);// XXXX就是记录集合
    int   NumberTotal =rms.getNumRecords();
    if (NumberTotal==0)// 当记录到的电话号码数量为零
        return "";// 返回空字符
    return BytesToString(rms.getRecord(1));// 这里只读取一个记录
}
catch(Exception e){ return "";} // 失败,没有读取任何信息
}
public String Save(String Number)// 保存Numb
{
    try{
        rms=RecordStore.openRecordStore("XXXX",true,RecordStore.AUTHMODE_ANY,true);// XXXX就是记录集合
        byte[] data = StringtoBytes(Number);// ————–以下只新建一条记录或者只修改一条记录
        if (rms.getNumRecords()==0)// 没有任何记录
            rms.addRecord(data, 0, data.length);// 创建记录
        if(rms.getNumRecords()==1)// 只有当前一个记录
            rms.setRecord(1,data, 0, data.length);// 修改记录
        rms.closeRecordStore();// ————–以上只新建一条记录或者只修改一条记录
        return "成功替换原号码\n新号码保存成功!";
    }
    catch(Exception e){
        try{
            rms.closeRecordStore();
        }
        catch(Exception ee){}}
    return "不能保存新号码!";
}