gpt4 book ai didi

java-me - 在 j2me 中读取和写入 RMS

转载 作者:行者123 更新时间:2023-12-02 02:13:12 25 4
gpt4 key购买 nike

我正在用 J2ME 做游戏。我想在 RMS 中保存数据级别和分数。这是我的代码这是 RMSData 类:

public class RMSData {

private static RecordStore rs = null;
static final String REC_STORE = "ReadWriteRMS";
public static void openRecStore(){
try {
rs = RecordStore.openRecordStore(REC_STORE, true);
} catch (Exception e) {}
}
public static void closeRecStore(){
try {
rs.closeRecordStore();
} catch (Exception e) {}
}

public static void deleteRecStore(){
if(RecordStore.listRecordStores()!= null){
try {
RecordStore.deleteRecordStore(REC_STORE);
} catch (Exception e) {}
}
}
public static void writeRecStore(String str){
byte[] rec = str.getBytes();
try {
rs.addRecord(rec, 0, rec.length);
} catch (Exception e) {}
}
public static String readRecStore(){
String kq =null;
try{
byte[] recData = new byte[5];
int len;

if (rs.getNumRecords()==0) return null;

for(int i = 1; i <= rs.getNumRecords(); i++){
if(rs.getRecordSize(i) > recData.length){
recData = new byte[rs.getRecordSize(i)];
}
len = rs.getRecord(i, recData, 0);
if (i==rs.getNumRecords()) kq = new String(recData, 0, len);
}
}catch (Exception e){}
return kq;
}
}

我将水平和得分写入 RMS :

RMSData.openRecStore();
RMSData.writeRecStore(String.valueOf(LevelPlay));
RMSData.writeRecStore(String.valueOf(Score));
RMSData.closeRecStore();

然后我读了它:

RMSData.openRecStore();
String st = null;
if(RMSData.readRecStore() == null)
st = "Level : 0"+"Score : 0";
else
st = "Level : "+RMSData.readRecStore()+"Score : "+RMSData.readRecStore();
RMSData.closeRecStore();

但它无法读取数据。

最佳答案

验证它的writeRecStore方法,如果你已经保存了第一条记录只需要用setRecord更新它们的值。请参阅我们在此处使用的示例:

   /**
* Saves the current data.
*
*/
public static void saveConfiguration() {
// ...

RecordStore recordStore = open(CONFIG_DB);

if (recordStore != null) {
byte byteArray[] = Persistence.packConfiguration();
try {
if (recordStore.getNumRecords() == 2) {
byte roolback[] = recordStore.getRecord(CURRENT);
recordStore.setRecord(ROLLBACK, roolback, 0, roolback.length);
recordStore.setRecord(CURRENT, byteArray, 0, byteArray.length);
} else {
recordStore.addRecord(byteArray, 0, byteArray.length);
recordStore.addRecord(byteArray, 0, byteArray.length);
}

} catch (Exception ex) {

ex.printStackTrace();
}
}

Persistence.close(recordStore);

}



/**
* Packs the data and stores memory data into a byte array and returns it.
*
* @return The array of bytes with application data packed.
*/
private static byte[] packConfiguration() {
byte byteArray[] = null;

try {
ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
DataOutputStream dataoutputstream = new DataOutputStream(bytearrayoutputstream);

// starts packing the data into the byte array
dataoutputstream.writeBoolean(Persistence.rememberLogin);
dataoutputstream.writeBoolean(Persistence.sounds);
dataoutputstream.writeInt(Persistence.fontSize);
dataoutputstream.writeInt(Persistence.idiom);

dataoutputstream.writeUTF((Persistence.msg == null ? "" : Persistence.msg));
dataoutputstream.writeInt(Persistence.availability);

// ...

// end of packing
byteArray = bytearrayoutputstream.toByteArray();
dataoutputstream.close();

} catch (Exception ex) {
ex.printStackTrace();
}
return byteArray;
}

关于java-me - 在 j2me 中读取和写入 RMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11815789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com