介绍一些记录存储本身包含的获取信息的相关方法。每个RecordStore对象都包含标头与数据区,标头记录数据列的信息,数据区储存数据记录,详见示例7-2.
在RecordStore对象中存取数据时,要遵守以下基本流程与规范:
当对RecordStore进行文件储存时,记录数的初始值为零,每增加一条记录则加一,删除时则减一。记录数的值有助于了解记录储存条数。
取得下一条记录的recordID,用于下一条记录的储存或修改。
RecordStore版本编号, RecordStore对象里的数据有任何变动,包括新增、删除或修改时,版本编号也会跟着改变。它可以用于判断RecordStore对象是否被修改过。
有了这些特性,就能够取得它们对应的RecordStore对象信息:
l public int getNumRecords()
throws RecordStoreNotOpenException
取得当前RecordStore里记录的条数。
l public int getNextRecordID()
throws RecordStoreNotOpenException,
RecordStoreException
取得RecordStore里要记录的下一条数据的recordID.
l public int getVersion()
throws RecordStoreNotOpenException
取得当前的RecordStore版本编号,只要它被修改过编号就会增加。
l public int getSize()
throws RecordStoreNotOpenException
取得RecordStore所占用的字节大小。
l public long getLastModified()
throws RecordStoreNotOpenException
取得RecordStore最近一次被修改的时间。
l public int getSizeAvailable()
throws RecordStoreNotOpenException
取得RecordStore可以增加的数据量空间,返回值以byte为单位。
示例:
/× 取得记录存储各项信息的程序代码 ×/ import Javax.microedition.midlet.×; import Javax.microedition.lcdui.×; import Javax.microedition.rms.×; public class recordData2 extends MIDlet implements CommandListener { Display display; List list; Command okCommand; Command exitCommand; RecordStore rs; Alert alert; int num; public recordData2() { alert=new Alert("所有信息"); display=Display.getDisplay(this); list=new List("记录存储所有信息列表", List.EXCLUSIVE); okCommand = new Command("确认", Command.OK, 2); exitCommand = new Command("离开", Command.EXIT, 2); list.append("新建RecordC", null); list.append("增加一条记录",null); list.append("查看RecordStore记录数据",null); list.append("查看RecordStore版本数据",null); list.addCommand(okCommand); list.addCommand(exitCommand); list.setCommandListener(this); } public void startApp() { display.setCurrent(list); } public void pauseApp(){} public void destroyApp(boolean unconditional){} public void commandAction(Command cmd, Displayable disp) { if (cmd == okCommand) { switch(list.getSelectedIndex()){ case 0: //创建记录存储RecordC try{ rs=RecordStore.openRecordStore("RecordC",true); }catch(Exception ex){} alert.setString("RecordC创建完成"); break; case 1: //增加一条新记录 try{ byte[] recordData=new byte[1024]; recordData[0]=1; rs.addRecord(recordData, 0, 1); }catch(RecordStoreException rsnoe){} alert.setString("增加一条记录"); break; case 2: //取得当前的记录条数和下一条记录的recordID try{ alert.setString("记录条数:"+rs.getNumRecords()+ " 下一条记录recordID:"+rs.getNextRecordID()); |