J2ME的RMS读写实现
在实现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 "不能保存新号码!";
}