java - 在 Java J2ME 中使用 RecordStore

标签 java java-me midp rms

我目前正在做一些 J2ME 开发。我遇到的问题是,用户可以向记录存储添加和删除元素,如果一条记录被删除,则该记录将保留为空,其他记录不会向上移动。我试图提出一个循环来检查记录中是否有任何内容(如果它已被删除),如果有,那么我想将该记录的内容添加到列表中。 我的代码类似于如下:

      for (int i = 1; i <= rs.getNumRecords(); i++)
      {
        // Re-allocate if necessary

        if (rs.getRecordSize(i) > recData.length)
          recData = new byte[rs.getRecordSize(i)];
        len = rs.getRecord(i, recData, 0);
        st = new String(recData, 0, len);
        System.out.println("Record #" + i + ": " + new String(recData, 0, len));
        System.out.println("------------------------------");
        if(st != null)
        {
            list.insert(i-1, st, null);
        }

      }

当到达 rs.getRecordSize(i) 时,我总是收到“javax.microedition.rms.InvalidRecordIDException:查找记录时出错”。我知道这是因为记录为空,但我想不出解决这个问题的方法。

任何帮助将不胜感激。

提前致谢。

最佳答案

您应该使用 RecordEnumeration 来访问记录:

RecordEnumeration renum = rs.enumerateRecords(null, null, false);
while (renum.hasNextElement())
{
    int index = renum.nextRecordId();
    if (store.getRecordSize(index) == STORE_LEN)
    {

    }
}

您不能依赖 recordId 来获得任何有用的信息。使用不同的技术重新分配已删除的记录。

关于java - 在 Java J2ME 中使用 RecordStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2493648/

相关文章:

java - J2ME中如何生成哈希值?

java - 如何在不配对的情况下在远程设备中安装 J2ME .jar 文件?

java-me - 混淆器导致我的 j2me 程序异常 - 错误验证方法

java - 获取设备唯一ID

java - 使用 Tomcat 部署 Play 2.1 应用程序

java - 解释导致 HashMap.put() 执行无限循环的时机

java - 将 WCF 引用添加到 j2me 项目

java - JavaME 函数帮助

FileHandler.level 不覆盖全局级别

java - 使用 javafx 的基本计算器 : how to reset or restart