在JAVAME中,程序的数据保存的地方,无外乎两种,一种是把数据保存在RMS里面,这是所有的JAVAME的手机都支持的,还有一种就是把数据保存在手机的文件系统里面,这个不是所有手机都能支持的,只有支持JSR075的手机,才支持把数据保存在文件系统里面,并且如果你的程序没有经过签名的话,你每次保存或者读取,手机都会弹出恼人的提示,是否允许程序访问文件系统。所在我一般都是把数据存在RMS里面,因为读写RMS是安全的,并且也是不需要手机提示的。因为我们的RMS数据是存在一个特殊的地方。
Record Management System是J2ME的一个重要的子系统,目的是实现应用程序本地数据的持久性存储。目前支持文件系统的移动信息设备还有限,因此RMS是J2ME开发人员实现本地数据存储的首选途径。
关于j2me中RMS存储容量的问题,一般手机提供给RMS的容量只有30k左右的空间,当存储大量数据时很容易跑出 RecordStoreFullException异常,表示存储空间已满。
RMS(Record Management System)是首先在MIDP1.0中提出的,它所在的包是javax.microedition.rms。利用他可以在没有任何数字签名的情况下在手机中进行信息的读写工作。
要使用RMS,首先需要通过RecordStore类的静态方法,构造一个RecordStore类,来进行RMS操作。具体语法:
RecordStore rms = RecordStore.openRecordStore("myrmslog", true, RecordStore.AUTHMODE_ANY, true);
其中,"myrmslog":是我们的log文件的名字,这里需要注意,实际通过RMS存储的文件名是一系列扩展前缀与这个名字的组合作为log文件的名字,而不是简单的指定。
第二个boolean参数:标识了如果指定名字的文件不存在是否允许程序自己创建这个文件。
第三个整形参数:标识了这个log文件的访问权限,我们这里使用RecordStore.AUTHMODE_ANY表明这个log文件允许任何其他MIDlet程序访问。
第四个boolean参数:表明了任何其他MIDlet程序是否能够修改这个log文件。
这样就打开了一个RecordStore,接下来就是通过RecordStore进行RMS操作了,主要就是一条语句:
rms.addRecord(record, 0, record.length);
其中record是要写入RMS文件中的内容,这里应该是一个byte数组(可以使用String.getBytes()方法得到任意字符串的byte数组。)
这样一条记录便被保存到了RMS中,如果想要再填入其他内容,则重复执行上述语句即可。
最后,不要忘了,填入完所有内容后,要记得关闭RMS文件:
rms.closeRecordStore();
一个使用的例子大概像下面这样,在这个例子中我们通过循环写了100条内容到RMS中:
RecordStore rms = RecordStore.openRecordStore("myrmslog", true,RecordStore.AUTHMODE_ANY, true);
for(int i = 0; i < 100; i++){
String str = i + "test log";
byte[] record = str.getBytes();
rms.addRecord(record, 0, record.length);
}
rms.closeRecordStore();
写入之后,我们要再写另外的程序来读取我们的Log内容。同样的,第一步需要使用RecordStore类的静态方法,构造一个RecordStore类,但是这里的参数需要变化一下,下面我们说明:
recordStore = RecordStore.openRecordStore(RMS_NAME, VENDOR_NAME, MIDLETSUITE_NAME);
其中
RMS_NAME:就是我们上面写入RMS时指定的文件名字,只要和写入时指定的一样即可,那些额外附加上的前缀是由系统来处理的并不需要我们关心。
VENDOR_NAME:必须与我们写入RMS程序的Vender名字完全相同,这个名字可以在程序的Jad文件中找到,就是Midlet Vendor这一项。
MIDLETSUITE_NAME:必须与我们写入RMS程序的Midlet名字完全相同,这个名字同样可以在程序的Jad文件中找到,就是Midlet Name这一项。
这样我们就得到了一个RecordStore类。下面就可以使用这个类来读取我们之前写入的Log内容了:
RecordEnumeration re = recordStore.enumerateRecords(null, null, true);
while (re.hasNextElement()) {
int id=re.nextRecordId();
byte b[] = this.recordStore.getRecord(id);
System.out.println(new String(b));//这里可以修改成任意需要的处理。
}
读取完毕后同样要记得关闭RecordEnumeration 和 RecordStore:
re.destroy();
recordStore.closeRecordStore();
参考文献:http://hi.baidu.com/%C2%ED%B7%FE%CA%E9%C4%FE/blog/item/32ea45024e447a0b4afb516e.html
http://www.bcbbs.net/news/Content45765.aspx
分享到:
相关推荐
【J2ME RMS 知识点详解】 J2ME(Java 2 Micro Edition)是Java平台上针对嵌入式和移动设备的一种轻量级开发框架。在J2ME中,RMS(Record Management System)是一个小型的数据库管理系统,专门设计用于在资源有限的...
在本文中,我们将深入探讨基于J2ME的RMS(Record Management System)记录管理系统,特别关注如何在S60及更高版本的移动设备上实现一个备忘录应用。这个系统对于初学者来说是一个很好的学习资源,因为它展示了如何...
**J2ME RMS小试牛刀** 在移动设备开发领域,Java 2 Micro Edition(J2ME)曾经占据着重要的地位,尤其在功能手机时代,它为开发者提供了跨平台的应用程序开发框架。J2ME中的Record Management System(RMS)是用于...
J2ME RMS(Record Management System,记录管理系统)是Java Micro Edition平台中用于数据存储的一种机制。在移动设备或嵌入式系统中,由于资源限制,无法像Java SE或Android那样使用完整的数据库系统,因此J2ME引入...
这个“j2me RMS Demo”是一个针对初学者的实例,旨在帮助他们理解并掌握如何在J2ME应用程序中有效地使用RMS系统。 RMS是Java ME为资源有限的移动设备提供的一种轻量级数据库解决方案,它允许开发者创建自定义的数据...
J2me中 读写rms 封装好的借口。直接使用read write接口操作,中间步骤全部封装好。初次使用会建立这个rms record。
标题中的"J2me数据库引擎类.rar_j2me_rms"暗示了这是一个关于使用J2ME RMS实现的轻量级数据库引擎。这个压缩包可能包含了一个或多个Java类,用于封装RMS操作,简化开发者对RMS的使用。 描述中的“一个用J2me 的RMS ...
**J2ME RMS数据存储详解** 在Java Micro Edition (J2ME) 平台中,Resource Management System (RMS) 是一种用于存储应用程序数据的重要机制。由于J2ME主要用于资源有限的移动设备,如手机和掌上电脑,RMS提供了一种...
package j2me4; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet....
J2ME RMS与MIDlet的交互界面如图1所示,其中MIDlet通过API调用与RMS交互,执行数据的存储和检索操作。RMS内部则依赖于底层操作系统提供的数据管理服务,实现数据的持久化存储。 ![图1. J2ME RMS与MIDlet接口连接...
示例应用程序使用 Java 2 Platform, Micro Edition (J2ME) record management system (J2ME RMS) 存储订单信息,用一个 MIDlet 执行必要的创建及访问数据库应用程序的逻辑。介绍如何使用 J2ME RMS、打造 MIDlet、并...
RMS (Record Management System) 是 J2ME 中的一个核心部分,它提供了一种在移动设备上存储数据的方法。在本文中,我们将深入探讨 J2ME RMS 的相关知识点。 1. **RMS 概述**:RMS 是 J2ME 为资源有限的设备设计的...
在本文中,我们将深入探讨如何使用Java 2 Micro Edition(J2ME)平台中的Record Management System(RMS)引擎来创建一个简单的电话本应用。这个应用涵盖了基础的联系人管理功能,包括添加、查询、显示所有联系人、...
2. RMS (Record Management System):在J2ME中,RMS(记录管理系统)是用于存储数据的一种机制。由于移动设备的内存有限,RMS提供了一种本地数据存储解决方案,可以保存用户设置、查询历史或其他应用程序需要的数据...
**J2ME RMS编程详解** J2ME,全称Java Micro Edition,是Java平台的一个重要分支,主要用于嵌入式设备和移动设备上的应用程序开发。在J2ME中,Record Management System(RMS)是一个用于存储数据的关键组件,特别...
标题"RMS.zip_rms"表明这是一个关于使用J2ME RMS进行数据库操作的压缩包文件,可能包含了示例代码或者工具,供开发者学习和使用。 RMS是J2ME MIDP(Mobile Information Device Profile)的一部分,它提供了一种轻量...
在J2ME(Java 2 Micro Edition)平台上,RMS(Record Management System)是一个关键的存储机制,用于在有限的移动设备资源上实现持久化数据存储。RMS为开发者提供了简单的方法来创建、读取、更新和删除数据,类似于...