📄 myrecord.java
字号:
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreFullException;
import javax.microedition.rms.RecordStoreNotFoundException;
import javax.microedition.rms.InvalidRecordIDException;
/**
* 存档文件类
* @author WuChen
* 上海协亨
*/
public class myRecord{
/**
* 记录集名
*/
private String recordName;
/**
* 记录ID
*/
private int recordID;
/**
* 记录内容
*/
private Hashtable data = new Hashtable();
/**
* 更新时间
*/
private String modifyTime;
public myRecord(){
}
public myRecord(String name,int id){
this.recordName = name;
this.recordID = id;
if(this.checkStore()){
try {
RecordStore recordstore = RecordStore.openRecordStore(this.recordName, false);
String str = new String(recordstore.getRecord(this.recordID),"UTF-8");
String[] datastr = split(str,"&");
for (int i =0; i < datastr.length; i ++){
splitDatastring(datastr[i],"=");
}
Date modifyDate = new Date(recordstore.getLastModified());
modifyTime = modifyDate.toString();
recordstore.closeRecordStore();
str = null;
datastr = null;
modifyDate = null;
System.gc();
}
catch (RecordStoreFullException e) {
//记录集存储已满
e.printStackTrace();
}
catch (RecordStoreNotFoundException e) {
//记录集不存在
e.printStackTrace();
}
catch (InvalidRecordIDException e){
//记录集对应id不存在
e.printStackTrace();
}
catch (RecordStoreException e) {
//打开记录集错误
e.printStackTrace();
}
catch (UnsupportedEncodingException e) {
//byte转换成String错误
e.printStackTrace();
}
}
}
public void save(){
this.modifyTime = new Date().toString();
RecordStore recordstore;
String val;
try {
recordstore = RecordStore.openRecordStore(recordName, true);
StringBuffer s = new StringBuffer("");
Enumeration e = data.keys();
while(e.hasMoreElements()){
Object key = e.nextElement();
s.append(key + "=" + data.get(key));
if (e.hasMoreElements()){
s.append("&");
}
}
val = s.toString();
if(s.length() > 0){
if (recordstore.getNumRecords() >= recordID){
recordstore.setRecord(recordID,val.getBytes(),0,val.getBytes().length);
}
else{
recordstore.addRecord(val.getBytes(),0,val.getBytes().length);
}
recordstore.closeRecordStore();
}
}
catch (RecordStoreFullException e) {
e.printStackTrace();
}
catch (InvalidRecordIDException e){
e.printStackTrace();
}
catch (RecordStoreNotFoundException e) {
e.printStackTrace();
}
catch (RecordStoreException e) {
e.printStackTrace();
}
}
public Hashtable getData() {
return data;
}
public void setData(Hashtable data) {
this.data = data;
}
public int getRecordID() {
return recordID;
}
public void setRecordID(int recordID) {
this.recordID = recordID;
}
public String getRecordName() {
return recordName;
}
public void setRecordName(String recordName) {
this.recordName = recordName;
}
public boolean checkStore() {
String[] recordstores = RecordStore.listRecordStores();
if (recordstores == null || recordstores.length == 0){
return false;
}
else{
for (int i = 0;i < recordstores.length;i ++){
if(this.getRecordName().equals(recordstores[i])){
return true;
}
}
}
return false;
}
private static String[] split(String original,String regex)
{
// 取子串的起始位置
int startIndex = 0;
// 将结果数据先放入Vector中
Vector v = new Vector();
// 返回的结果字符串数组
String[] str = null;
// 存储取子串时起始位置
int index = 0;
// 获得匹配子串的位置
startIndex = original.indexOf(regex);
// System.out.println("0" + startIndex);
// 如果起始字符串的位置小于字符串的长度,则证明没有取到字符串末尾。
// -1代表取到了末尾
while(startIndex < original.length() && startIndex != -1)
{
String temp = original.substring(index,startIndex);
// System.out.println(" " + startIndex);
// 取子串
v.addElement(temp);
// 设置取子串的起始位置
index = startIndex + regex.length();
// 获得匹配子串的位置
startIndex = original.indexOf(regex,startIndex + regex.length());
}
// 取结束的子串
v.addElement(original.substring(index + 1 - regex.length()));
// 将Vector对象转换成数组
str = new String[v.size()];
for(int i=0;i<v.size();i++)
{
str[i] = (String)v.elementAt(i);
}
// 返回生成的数组
return str;
}
public void splitDatastring(String original,String regex){
if (original.indexOf(regex)>0 && original.indexOf(regex) < original.length()){
data.put(original.substring(0,original.indexOf("=")),original.substring(original.indexOf("=")+1));
}
}
public String getModifyTime() {
return modifyTime;
}
public void setModifyTime(String modifyTime) {
this.modifyTime = modifyTime;
}
public int getIntVal(String valname){
if (data.containsKey(valname)){
return Integer.parseInt(data.get(valname).toString());
}
else{
return 0;
}
}
public String getStringVal(String valname){
if (data.containsKey(valname)){
return (data.get(valname).toString());
}
else{
return "";
}
}
public void setVal(String valname,String val){
data.put(valname, val);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -