J2ME RMS封装

大家在做J2EE开发时数据存储一般是放在数据库中进行,在开发手机应用时用J2ME技术存储数据的方式便会用到RMS,RMS具体细节在网上GOOGLE下.这里直接贴代码.

    RMS存储数据方式是以字节流形式实现的,这里进行封装,使其操作像数据库表形式一样.

建立一个包含以下字段的表

 int index;
 String name;
 String fileUrl;
 int picSize;
 int textSize;
 String other;

第一步:TextResBean 类封装我用到的字段数据

public class TextResBean {
 private int index;
 private String name;
 private String fileUrl;
 private int picSize;
 private int textSize;
 private String other;

 public int getIndex() {
  return index;
 }

 public void setIndex(int index) {
  this.index = index;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getFileUrl() {
  return fileUrl;
 }

 public void setFileUrl(String fileUrl) {
  this.fileUrl = fileUrl;
 }

 public int getPicSize() {
  return picSize;
 }

 public void setPicSize(int picSize) {
  this.picSize = picSize;
 }

 public int getTextSize() {
  return textSize;
 }

 public void setTextSize(int textSize) {
  this.textSize = textSize;
 }

 public String getOther() {
  return other;
 }

 public void setOther(String other) {
  this.other = other;
 }
 public TextResBean() {

 }

 public TextResBean(int index, String name, String fileUrl, int picSize,
   int textSize, String other) {
  super();
  this.index = index;
  this.name = name;
  this.fileUrl = fileUrl;
  this.picSize = picSize;
  this.textSize = textSize;
  this.other = other;
 }


 public TextResBean(byte[] rec) {
  initPlayListBean(rec); // 读取RMS内容的构造函数
 }
 public byte[] toBytes() { // 写成字节

  byte[] data = null;

  try {
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
   DataOutputStream dos = new DataOutputStream(baos);
   dos.writeInt(index);
   dos.writeUTF(name);
   dos.writeUTF(fileUrl);
   dos.writeInt(picSize);
   dos.writeInt(textSize);
   dos.writeUTF(other);
   data = baos.toByteArray();
   baos.close();
   dos.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
  return data;
 }
 public void initPlayListBean(byte[] rec) { // 从字节读取内容

  ByteArrayInputStream bais = new ByteArrayInputStream(rec);
  DataInputStream dis = new DataInputStream(bais);
  try {
   index = dis.readInt();
   name = dis.readUTF();
   fileUrl = dis.readUTF();
   picSize = dis.readInt();
   textSize = dis.readInt();
   other = dis.readUTF();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

第二步:TextMusicResRMS类RMS操作封装

public class TextMusicResRMS {
 private static TextMusicResRMS PLRMS = new TextMusicResRMS();
 private RecordStore rs;

 public static TextMusicResRMS getInstance() {
  if (PLRMS == null) {
   PLRMS = new TextMusicResRMS();
  }
  return PLRMS;
 }


 private TextMusicResRMS() {

 }

 public void openRS(String rsname) {
  try {
   rs = RecordStore.openRecordStore(rsname, true);
  } catch (Exception e) {
   System.out.println("打开记录异常");
  }
 }

 
 public void closeRS() {
  try {
   rs.closeRecordStore();
  } catch (Exception e) {
   System.out.println("关闭记录异常");
  }
 }


 public boolean addRecord(String rsname, String name, String fileUrl,
   int picSize, int textSize, String other) {
  boolean success = false;
  openRS(rsname);
  try {
   int index = rs.getNumRecords() + 1;
   TextResBean plb = new TextResBean(index, name, fileUrl, picSize,
     textSize, other);
   byte[] data = plb.toBytes();
   rs.addRecord(data, 0, data.length);
   success = true;
  } catch (Exception e) {
   e.printStackTrace();
   System.out.println("添加记录异常");
  }
  closeRS();
  return success;
 }

  
 public int getNumOfRecords() {// 得到RMS中记录的条数
  try {
   int x = rs.getNumRecords();
   return x;
  } catch (Exception e) {
   System.out.println("获取记录总数异常");
   return 0;
  }
 }

 
 public TextResBean[] getRecords(String rsname) {// 取得RMS中的所有记录
  openRS(rsname);
  TextResBean[] result = {};

  try {
   rs.enumerateRecords(null, null, false);
   result = new TextResBean[rs.getNumRecords()];
   for (int i = 0; i < result.length; i++) {
    TextResBean plb = new TextResBean(rs.getRecord(getId(i + 1)));

    result[i] = plb;
   }
  } catch (Exception e) {
   System.out.println("取得所有记录异常" + e.getMessage());
  }
  closeRS();
  return result;
 }

 
 public TextResBean getRecord(int j) {// 根据记录编号(参数 int j)取得一条记录
  TextResBean result = new TextResBean();
  try {
   rs.enumerateRecords(null, null, false);
   result = new TextResBean(rs.getRecord(getId(j)));
  } catch (Exception e) {
   e.printStackTrace();
   System.out.println("根据编号取记录异常" + e.getMessage());
  }
  return result;
 }

 
 public int getId(int index) {// 得到记录号int j
  RecordEnumeration re = null;
  int x = 1;
  try {
   re = rs.enumerateRecords(null, null, false); // enumeration
   int sum = getNumOfRecords();
   for (int i = 0; i < sum; i++) {
    int j = re.nextRecordId();
    TextResBean plb = new TextResBean(rs.getRecord(j));
    if (plb.getIndex() == index) {
     x = j;
    }
   }
  } catch (Exception e) {
   System.out.println("得到记录号异常");
  }
  return x;
 }

 public boolean setRecord(int id, int index, String name, String fileUrl,
   int picSize, int textSize, String other) {
  boolean success = false;
  try {
   rs.enumerateRecords(null, null, false);
   TextResBean plb = new TextResBean(index, name, fileUrl, picSize,
     textSize, other);
   byte[] data = plb.toBytes();
   rs.setRecord(id, data, 0, data.length);
   success = true;
  } catch (Exception e) {
   System.out.println("修改记录异常");
   e.printStackTrace();
  }
  return success;
 }
 public void deleteRecord(int id) {

  try {
   rs.deleteRecord(id);
  } catch (Exception e) {
   System.out.println("删除记录异常");
   e.printStackTrace();
  }

 }

 
 public void deletePlAllRecord(String rsname) {
  openRS(rsname);
  try {
   int reccount = rs.getNumRecords();
   for (int i = 1; i <= reccount; i++) {
    deleteRecord(i);
   }
  } catch (Exception e) {
   System.out.println("删除记录异常");
   e.printStackTrace();
  }
  closeRS();
 }

 
 public void deletePlRecordStore(String rsname) {
  // openRS(rsname);
  try {
   RecordStore.deleteRecordStore(rsname);
  } catch (Exception e) {
   System.out.println("清空异常");
  }
  // closeRS();
 }

 
 public void deleteRecord(String rsname, int index) {
  openRS(rsname);
  int SourceRecordId = getId(index);
  deleteRecord(SourceRecordId);
  int sum = getNumOfRecords();
  for (int i = index; i <= sum; i++) {
   int sRecordId = getId(i + 1);
   TextResBean plb = getRecord(i + 1);
   setRecord(sRecordId, i, plb.getName(), plb.getFileUrl(), plb
     .getPicSize(), plb.getTextSize(), plb.getOther());
  }
  closeRS();
 }

 }

第三步 如何调用

TextMusicResRMS resrms = TextMusicResRMS.getInstance();

resrms.addRecord(String rsname, String name, String fileUrl,
   int picSize, int textSize, String other);

resrms.deleteRecord(String rsname, int index) {
resrms.getRecords(resname);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值