📄 dossierrms.java
字号:
/*
* DossierRms.java
*
* Created on 2005年12月20日, 上午8:52
* Download by http://www.codefans.net
* To change this template, choose Tools | Options and locate the template under
* the Source Creation and Management node. Right-click the template and choose
* Open. You can then make changes to the template in the Source Editor.
*/
import javax.microedition.lcdui.*;
import java.io.*;
import java.util.*;
import javax.microedition.rms.*;
/**
*
* @author shide8848
*/
class DossierComparator implements RecordComparator{
public int compare(byte[] rec1, byte[] rec2){
byte p1=0;
byte p2=0;
try{
DossierRms.deserialize(rec1);
p1=DossierRms.dossierId;
DossierRms.deserialize(rec2);
p2=DossierRms.dossierId;
}catch(Exception e){}
if (p1==p2){
return RecordComparator.EQUIVALENT;
} else if(p1<p2){
return RecordComparator.PRECEDES;
} else{
return RecordComparator.FOLLOWS;
}
}
}
public class DossierRms {
public static byte tempId=0;
public static byte dossierId=0;
public static int totalCursor=0;
public static int passWaitTime=0;
public static int curx=0;
public static int cury=0;
public static byte[] mainGrids=new byte[Grids.gridW*Grids.gridW];
public static int[] dossierIdList=null;
public static void transDataIn(int tId){
dossierId=(byte)tId;
totalCursor=GameCanvas.totalCursor;
passWaitTime=Grids.passWaitTime-1000;
if (passWaitTime<0){
passWaitTime=0;
}
curx=GameCanvas.curx;
cury=GameCanvas.cury;
for(int i=0;i<mainGrids.length;i++){
mainGrids[i]=Grids.mainGrids[i];
}
}
public static void transDataOut(){
GameCanvas.totalCursor=totalCursor;
Grids.passWaitTime=passWaitTime;
GameCanvas.curx=curx;
GameCanvas.cury=cury;
for (int i=0;i<mainGrids.length;i++){
Grids.mainGrids[i]=mainGrids[i];
}
}//返回值代表dosId对应的记录号 -1代表未找到这个存档
public static int getRmsIdByDossierId(int dosId){
int r=-1;
RecordStore rs1=null;
try{
rs1=RecordStore.openRecordStore("dossier",true);
}catch(Exception e){}
if (rs1!=null){
RecordEnumeration re=null;
try{
re=rs1.enumerateRecords(null,null,false);
byte[] data=null;
int id=-1;
while(re.hasNextElement()){
id=re.nextRecordId();
data=rs1.getRecord(id);
deserializeDosId(data);
if (tempId==dosId){
r=id;
break;
}
}
}catch(Exception e){
}
if (re!=null){
re.destroy();
re=null;
}
try{
rs1.closeRecordStore();
}catch(Exception e){}
}
rs1=null;
return r;
}
public static void writeDossier(int dosId){
int rmsId=getRmsIdByDossierId(dosId);
RecordStore rs1=null;
try{
rs1=RecordStore.openRecordStore("dossier",true);
}catch(Exception e){}
if (rs1!=null){
transDataIn(dosId);
byte[] data1=null;
try{
data1=serialize();
}catch(Exception e){}
if (rmsId==-1){//目前没有这个存档号的记录
try{
rs1.addRecord(data1, 0, data1.length);
}catch(Exception e){}
} else{
try{
rs1.setRecord(rmsId, data1, 0, data1.length);
}catch(Exception e){}
}
try{
rs1.closeRecordStore();
}catch(Exception e){}
}
rs1=null;
}
public static void readDossier(int dosId){
int rmsId=getRmsIdByDossierId(dosId);
RecordStore rs1=null;
try{
rs1=RecordStore.openRecordStore("dossier",true);
}catch(Exception e){}
if (rs1!=null){
try{
byte[] data1=rs1.getRecord(rmsId);
deserialize(data1);
}catch(Exception e){}
try{
rs1.closeRecordStore();
}catch(Exception e){}
}
transDataOut();
}
//返回值代表存档的个数,0代表无存档
public static int setDossierIdList(){
int rmsNum=0;
RecordStore rs1=null;
try{
rs1=RecordStore.openRecordStore("dossier",true);
}catch(Exception e){}
if (rs1!=null){
try{
rmsNum=rs1.getNumRecords();
}catch(Exception e){}
if (rmsNum>0){
dossierIdList=new int[rmsNum];
RecordEnumeration re=null;
try{
re=rs1.enumerateRecords(null,new DossierComparator(),false);
int id=0;
byte[] data1=null;
int j=0;
while(re.hasNextElement()){
id=re.nextRecordId();
data1=rs1.getRecord(id);
deserializeDosId(data1);
dossierIdList[j++]=tempId;
}
}catch(Exception e){}
if (re!=null){
re.destroy();
re=null;
}
}
try{
rs1.closeRecordStore();
}catch(Exception e){}
}
return rmsNum;
}
public static byte[] serialize() throws
IOException{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeByte(dossierId);
dos.writeInt(totalCursor);
dos.writeInt(passWaitTime);
dos.writeInt(curx);
dos.writeInt(cury);
for(int i=0;i<mainGrids.length;i++){
dos.writeByte(mainGrids[i]);
}
baos.close();
dos.close();
return baos.toByteArray();
}
public static void deserialize(byte[] data1) throws IOException{
ByteArrayInputStream bais = new ByteArrayInputStream(data1);
DataInputStream dis = new DataInputStream(bais);
dossierId=dis.readByte();
totalCursor=dis.readInt();
passWaitTime=dis.readInt();
curx=dis.readInt();
cury=dis.readInt();
for(int i=0;i<Grids.gridW*Grids.gridW;i++){
mainGrids[i]=dis.readByte();
}
bais.close();
dis.close();
}
public static void deserializeDosId(byte[] data1) throws IOException{
ByteArrayInputStream bais = new ByteArrayInputStream(data1);
DataInputStream dis = new DataInputStream(bais);
tempId=dis.readByte();
bais.close();
dis.close();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -