许多MIDP应用程序需要简单的存储配置信息,对此,简单封装一个RMSHandler,实现一条记录的读写:
package com.crackj2ee.midp.rms;
import java.io.*;
import javax.microedition.rms.*;
public final class RMSHandler {
private static final String RECORD_STORE_NAME = "RmsDaTa";
public static boolean loadUniqueRecord(Persistentable p) {
byte[] data = loadUniqueRecord();
if(data==null)
return false;
DataInputStream input = null;
try {
input = new DataInputStream(new ByteArrayInputStream(data));
p.load(input);
return true;
}
catch(IOException ioe) {
return false;
}
finally {
try {
input.close();
}
catch (Exception e) {}
}
}
public static boolean saveUniqueRecord(Persistentable p) {
DataOutputStream output = null;
try {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
output = new DataOutputStream(bytes);
p.save(output);
return saveUniqueRecord(bytes.toByteArray());
}
catch(IOException ioe) {
return false;
}
finally {
if(output!=null)
try {
output.close();
}
catch (Exception e) {}
}
}
private static byte[] loadUniqueRecord() {
RecordStore rs = null;
RecordEnumeration re = null;
try {
rs = RecordStore.openRecordStore(RECORD_STORE_NAME, true);
if(rs.getNumRecords()==0)
return null;
re = rs.enumerateRecords(null, null, false);
if(re.hasNextElement())
return re.nextRecord();
return null;
}
catch(RecordStoreException rse) {
return null;
}
finally {
if(re!=null) {
re.destroy();
}
if(rs!=null) {
try {
rs.closeRecordStore();
}
catch (Exception e) {}
}
}
}
private static boolean saveUniqueRecord(byte[] data) {
RecordStore rs = null;
RecordEnumeration re = null;
try {
rs = RecordStore.openRecordStore(RECORD_STORE_NAME, true);
re = rs.enumerateRecords(null, null, false);
if(re.hasNextElement()) {
rs.setRecord(re.nextRecordId(), data, 0, data.length);
}
else {
rs.addRecord(data, 0, data.length);
}
return true;
}
catch(RecordStoreException rse) {
return false;
}
finally {
if(re!=null) {
re.destroy();
}
if(rs!=null) {
try {
rs.closeRecordStore();
}
catch (Exception e) {}
}
}
}
}
需要持久化的类实现一个Persistentable接口:
package com.crackj2ee.midp.rms;
import java.io.*;
public interface Persistentable {
void save(DataOutputStream output) throws IOException;
void load(DataInputStream input) throws IOException;
}
读写数据时,按照顺序依次读写即可,例如:
class MyForm extends Form implements Persistentable {
private int score;
private String username;
public MyForm() {
super("Test");
load(this);
}
public void save(DataOutputStream output) throws IOException {
output.writeInt(score);
output.writeUTF8(username);
}
public void load(DataInputStream input) throws IOException {
score = input.readInt();
username = input.readUTF8();
}
}
分享到:
相关推荐
对jdbc操作进行封装,使用方便。!对经常要使用jdbc操作数据的。。。应该有帮助!
今天找寻AJAX类,使用起来不是很方便,算了自己封装一个 注:简单封装,使用简单
Access数据库的简单封装 Access数据库的简单封装 Access数据库的简单封装
fusionchart的java简单封装fusionchart的java简单封装fusionchart的java简单封装fusionchart的java简单封装fusionchart的java简单封装fusionchart的java简单封装
VS2010编写,MFC操作EXCEL2010的简单封装,包含写入内容,批量导入数据,设置字体、字体颜色、单元格背景颜色、合并单元格、居中、边框、插入图片等基本操作
VC++ 封装的Ado操作类,可以对数据库进行简单的增删改查,而不用直接调用ADO的是三个接口,操作简单
本文实例讲述了Python操作Oracle数据库的简单方法和封装类。分享给大家供大家参考,具体如下: 最近工作有接触到Oracle,发现很多地方用Python脚本去做的话,应该会方便很多,所以就想先学习下Python操作Oracle的...
简单封装使用OkHttp3
对popwindow的一个简单封装,能够快捷使用popwindow
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例.docx
自己封装的一个简单的VS2015平台下,C++操作MySQL数据库;可实现连接,增删改查等功能。
Sqlite3 C++ 简单单例数据库操作类封装,支持数据的简单操作,可用,尚不完善
kotlin对activity和Fragment的简单封装,使得安卓开发越来越简洁。
对OCI的简单封装,完成数据的查询,集合多线程、连接池。 对OCI的简单封装,完成数据的查询,集合多线程、连接池。 对OCI的简单封装,完成数据的查询,集合多线程、连接池。 对OCI的简单封装,完成数据的查询,集合...
自己写的java对数据库操作的功能一个简单封装 主要是 数据库链接, 数据库查询, 和数据库修改,删除,增加
okhttp3的简单的封装使用,只有get post2种网络请求的使用
NULL 博文链接:https://ruoli.iteye.com/blog/2254928
VS2015编写(之前上传的写成了VS2010)包含写入内容,批量导入数据(二维数组一次写入批量数据),设置字体、字体颜色、单元格背景颜色、合并单元格、居中、边框、插入图片等基本操作.电脑必须安装EXCEL2010版本。
GenericHibernateDao 继承 HibernateDao,简单封装 HibernateTemplate 各项功能,简化基于Hibernate Dao 的编写。
SwiftNotes - 围绕NotificationCenter的一个超级简单封装