【发布时间】:2012-08-07 06:56:37
【问题描述】:
我有一个 RMS,从
检索到 512 条记录rs.getNumRecords();
但是当我尝试使用 getRecordId(i) 或即使使用
rs.enumerateRecords( null, null, false );
我得到InvalidRecordIDException,用于从 1 到 180 的记录,并且我能够读取从 181 索引到 onwords 的记录。
我不会删除应用程序中任何位置的记录。
在处理(读取此 RMS)和覆盖应用程序之间存在退出应用程序的情况。
在读取记录时,我将在 try 块的末尾关闭 RMS。
是否有任何可能的原因导致 RMS 损坏或特定索引损坏??
使用 getRecord 读取 RMS 的代码是
try {
RecordStore rs = RecordStore.openRecordStore(getTableName(), true);
ByteArrayInputStream inputStream = null;
DataInputStream inputDataStream = null;
int nor = rs.getNumRecords();
for(int i=1;i<=nor;i++)
{
System.out.println("i : "+i);
_recordByteArr = rs.getRecord(i);
inputStream = new ByteArrayInputStream(_recordByteArr);
inputDataStream = new DataInputStream(inputStream);
System.out.println("val at " + i + " ::" + new String(_recordByteArr));
//used inputDataStream.readUTF() here
}
if (inputDataStream != null) {
inputDataStream.close();
}
if (inputStream != null) {
inputStream.close();
}
rs.closeRecordStore();
} catch (Exception e) {
System.out.println("exp in read fieldtxn :" + e);
}
【问题讨论】: