我目前正在做一些 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/