首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RMS存储持久数据的问题

RMS存储持久数据的问题
EN

Stack Overflow用户
提问于 2012-01-05 16:28:33
回答 1查看 655关注 0票数 2

1.模拟器上的问题:

我正在启动我的中间应用程序,第一时间是存储一些数据,然后我重新启动它,在第二次是读取存储的数据。它在前两种情况下运作良好,无一例外。

但是,我正在以同样的方式第二次重新启动它,然后它会给出异常:"Uncaught java/lang/NumberFormatException:“它只处理char,并且总数据小于64 kb。

2.真实设备上的问题:

RMS根本不起作用。我不知道我是否需要批准手机(诺基亚n95)。

谢谢。

在app中,根据选定的国家,它只是将慈善公司存储在rms中。因此,如果已选定国家,则必须跳过国家列表,然后在每次重新启动时显示公司列表。在下面的代码中,rms_Check()方法是检查数据,以便打开国家或公司列表框架。

代码语言:javascript
复制
public class X {

private static RecordStore rs =null;
private static Vector rms_Vector = new Vector();
static final String REC_STORE ="db_1";

public X() {

}

public void openRecStore(){
    try {
        rs = RecordStore.openRecordStore(REC_STORE, true);
        System.out.println("open record store");
    } catch (Exception e)
    {
        db(e.toString()+" in openRecStore");
    }
}

public void closeRecStore(){
    try {
        rs.closeRecordStore();
    } catch (Exception e) {
        db(e.toString()+" in closeRecStore");
    }
}

public void deleteRecStore()
{
if (RecordStore.listRecordStores()!=null){
    try {
        RecordStore.deleteRecordStore(REC_STORE);
    } catch (Exception e) {
        db(e.toString()+" in deleteRecStore");
    }
}
}

public void writeRecord(String str) throws UnsupportedEncodingException
{
    byte[] rec = str.getBytes("UTF-8");

    try {
        rs.addRecord(rec, 0, rec.length);
        System.out.println("write record store");
    } catch (Exception e) {
        db(e.toString()+" in writeRecord");
    }
}

public void readRecord()
{
    try {
        // Intentionally it is too small to test code 
        byte[] m_enc = new byte[5];
        byte[] recData = new String(m_enc).getBytes("UTF-8");
        int len;

        for(int i =1; i<= rs.getNumRecords(); i++){
        if(rs.getRecordSize(i)> recData.length)
            recData = new byte[rs.getRecordSize(i)];

        len = rs.getRecord(i, recData, 0);
        System.out.println("Record #"+i+":"+new String(recData, 0, len));
        System.out.println("------------------------");
        rms_Vector.addElement(new String(recData, 0, len));
        }
    } catch (Exception e) {
        db(e.toString() +" in readStore");
    }
}

private void db(String str)
{
System.out.println("Msg:"+str);
}
public Vector rms_Array(){

    return this.rms_Vector;
}

public boolean rms_Check(){
if(this.rms_Vector.size()>0){
    System.out.print("rms_check: true");
    // if true it will display company list every time
return true;
}else{
    System.out.print("rms_check: false");
    //if false it will display country list then company list
return false;
}
}

}
EN

回答 1

Stack Overflow用户

发布于 2012-06-23 15:29:50

使用这个

代码语言:javascript
复制
private RecordStore rs = null;    // Record store
public String REC_STORE = "RSM name"; // Name of record store
public int record_max=0;

public void openRecStore(){
try{
rs = RecordStore.openRecordStore(REC_STORE, true );
}catch (Exception e){}
}  

 public void closeRecStore(){
try{
rs.closeRecordStore();
}catch (Exception e){}
}

public void deleteRecStore(){
if (RecordStore.listRecordStores() != null){
try{
RecordStore.deleteRecordStore(REC_STORE);
}catch (Exception e){}
}  
}

public void writeRecord(String str){
byte[] rec = str.getBytes();

 try{
 rs.addRecord(rec, 0, rec.length);
 }catch (Exception e){}
 }

  public void readRecords(){
   try{
   byte[] recData = new byte[5]; 
    int len;
    record_max=rs.getNumRecords();
    for(int i = 1; i <= record_max; i++){

        if(rs.getRecordSize(i) > recData.length){
        recData = new byte[rs.getRecordSize(i)];

        }
        len = rs.getRecord(i, recData, 0);
        file_name[i]=new String(recData, 0, len);

       }
     }catch (Exception e){}
   }

保存数据的file_name[]数组

对于负载肌动蛋白逗号:

代码语言:javascript
复制
            openRecStore();
            readRecords();
            for(int j=1;j<=record_max;j++ ) {
             System.out.println("Record " + j + " : " + file_name[j]);
                }
             closeRecStore();

拯救这个:

代码语言:javascript
复制
            openRecStore();
            writeRecord(textField.getString());
            closeRecStore();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8745995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档