亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? j2me中rms的使用解析.txt

?? J2ME中RMS(Record Manager System)的使用解析
?? TXT
字號:
J2ME中RMS的使用解析

在J2ME中,RMS作為唯一的永久性存儲工具,其重要性是不言而喻的。但是很多剛剛開始學習J2ME的新人總是抱怨在這方面的資料很少,或者是針對性不強。因此,我想把自己在這方面的一些學習心得和大家交流一下。 
RMS即Record Manager System,在手機應用中常常作為得分記錄、游戲信息存儲等的工具使用。 
RMS的使用可以分為兩個部分:一、單一記錄的構造;二、RecordStore的使用和操作。下面就這兩方面進行詳細說明。
一、單一記錄的構造。我們在存儲記錄時可能需要記錄很多相似的條目,在這里我們可以把這種結構看成數據庫,我們在這一步就是要構造數據庫中的一行,即單一記錄的構造。程序的源碼如下: 
package com.cuilichen.usual; 

import java.io.ByteArrayInputStream;//要使用到的各種輸入輸出流 
import java.io.ByteArrayOutputStream; 
import java.io.DataInputStream; 
import java.io.DataOutputStream; 

public class Appointment {//單一記錄的類名 
private int int1; // 
private int int2; // 
private long long1; 
private String str1; //str1作為保留字段,記錄檢索的關鍵字 
private String str2; // 
private String str3; // 
private boolean WroteFlag; // 

public Appointment() { 
} 

public Appointment(int _int1, int _int2, long _long1, String _str1, 
String _str2, String _str3, boolean _WroteFlag) { 
this.int1 = _int1; //寫入RMS的構造函數 
this.int2 = _int2; 
this.long1 = _long1; 
this.str1 = _str1; 
this.str2 = _str2; 
this.str3 = _str3; 
this.WroteFlag = _WroteFlag; 
} 

public Appointment(byte[] rec) { 
initAppointmnet(rec); //讀取RMS內容的構造函數 
} 

public byte[] toBytes() { //寫成字節(jié) 

byte[] data = null; 

try { 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
DataOutputStream dos = new DataOutputStream(baos); 
dos.writeInt(int1); 
dos.writeInt(int2); 
dos.writeLong(long1); 
dos.writeUTF(str1); 
dos.writeUTF(str2); 
dos.writeUTF(str3); 
dos.writeBoolean(WroteFlag); 
data = baos.toByteArray(); 
baos.close(); 
dos.close(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
return data; 
} 

public void initAppointmnet(byte[] rec) { //從字節(jié)讀取內容 

ByteArrayInputStream bais = new ByteArrayInputStream(rec); 
DataInputStream dis = new DataInputStream(bais); 

try { 
int1 = dis.readInt(); 
int2 = dis.readInt(); 
long1 = dis.readLong(); 
str1 = dis.readUTF(); 
str2 = dis.readUTF(); 
str3 = dis.readUTF(); 
WroteFlag = dis.readBoolean(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
} 

public int getInt1() { //int 
return int1; 
}
public int getInt2() { 
return int2; 
}
public long getLong1() { 
return long1; 
} 

public String getStr1() { //String 
return str1; 
} 

public String getStr2() { //String 
return str2; 
} 

public String getStr3() { 
return str3; 
} 

public boolean getWroteFlag() { //返回寫入標志 
return WroteFlag; 
} 
} 
這個類的使用保證了我們在使用流時,內容的寫入和輸出。當然,就如同數據庫表的設計一樣,我們可以任意對每一條記錄增加或減少字段,在上面的類中我只使用了int1,int2,long1,str1,str2,str3和WroteFlag一共7個字段。

二、RecordStore的操作。類RMS如下: 
package com.cuilichen.usual; 

import javax.microedition.rms.RecordEnumeration; 
import javax.microedition.rms.RecordStore; 

public class RMS { 
public static final int Int1 = 0;//各個字段的默認數值 
public static final int Int2 = 0; 
public static final long Long1 = 0; 
public static final String Str1 = ""; 
public static final String Str2 = ""; 
public static final String Str3 = ""; 

public static boolean addRecord(String name, int int1, int int2,//添加記錄 
long long1, String str1, String str2, String str3, boolean b) { 
boolean success = false; 

try { 
RecordStore rs = RecordStore.openRecordStore(name, true); 
Appointment app = new Appointment(int1, int2, long1, str1, str2,str3, b); 
//既然str1作為保留字段,我們在這里就要如此操作:例如int1為我們設定的關鍵字,那么str1 = Integer.toString(int1); 
byte[] data = app.toBytes(); 
rs.addRecord(data, 0, data.length); 
rs.closeRecordStore(); 
success = true; 
} catch (Exception e) { 
e.printStackTrace(); 
}
return success; 
}
public static int getNumOfRecords(String name) {//得到RMS中記錄的條數 
try { 
RecordStore rs = RecordStore.openRecordStore(name, true); 

return rs.getNumRecords(); 
} catch (Exception e) { 
return 0; 
} 
} 

public static Appointment[] getRecords(String name) {//取得RMS中的所有記錄 
Appointment[] result = { }; 

try { 
RecordStore rs = RecordStore.openRecordStore(name, false); 
RecordEnumeration re = rs.enumerateRecords(null, null, false); 
result = new Appointment[rs.getNumRecords()]; 

for (int i = 0; i < result.length; i++) { 
int j = re.previousRecordId(); 
Appointment app = new Appointment(rs.getRecord(j)); 
result[i] = app; 

//System.out.println("app["+i+"] "+app.getStr2()); 
} 

rs.closeRecordStore(); 
} catch (Exception e) { 
} 

return result; 
} 

public static Appointment getRecord(String name, int j) {//根據記錄編號(參數 int j)取得一條記錄 
Appointment result = new Appointment(); 

try { 
RecordStore rs = RecordStore.openRecordStore(name, false); 
RecordEnumeration re = rs.enumerateRecords(null, null, false); 
result = new Appointment(rs.getRecord(j)); 
rs.closeRecordStore(); 
} catch (Exception e) { 
} 

return result; 
} 

public static int getIndex(String name, String content) {//得到記錄號int j,這里需要使用保留字段str1 
RecordStore rs = null; 
RecordEnumeration re = null; 

try { 
rs = RecordStore.openRecordStore(name, false); //open 
re = rs.enumerateRecords(null, null, false); //enumeration 

for (int i = 0; i < RMS.getNumOfRecords(name); i++) { 
int j = re.nextRecordId(); 
Appointment app = new Appointment(rs.getRecord(j)); 

if (app.getStr1().equals(content)) { 
return j; 
} 
} 
} catch (Exception e) { 
}
return 1; 
} 

public static boolean setRecord(String name, int id, int int1, int int2,//設置記錄號為id的記錄 
long long1, String str1, String str2, String str3, boolean b) { 
boolean success = false; 
RecordStore rs = null; 
RecordEnumeration re = null; 

try { 
rs = RecordStore.openRecordStore(name, false); //open 
re = rs.enumerateRecords(null, null, false); //enumeration 

Appointment app = new Appointment(int1, int2, long1, str1, str2, str3, b); 
//str1作為保留字段,在這里如此操作:例如若int1為我們設定的關鍵字,那么str1 = Integer.toString(int1); 

byte[] data = app.toBytes(); 
rs.setRecord(id, data, 0, data.length); 
success = true; 
rs.closeRecordStore(); 
} catch (Exception e) { 
} 

return success; 
} 
} 
在這個類中,我沒有將各個Exception向外拋出,一般來說這樣作是不合適的,它違背了Java的異常處理機制。但是在我使用這個類的各個J2ME程序中,它是可以勝任的,所以也就沒有進行進一步的修改。 
有了以上的兩個類和你對RMS的理解,在程序中,你就可以順暢的使用RMS了。 
比如在MIDlet開始時,如下操作(增加記錄): 
protected void startApp() throws MIDletStateChangeException { 
if (RMS.getNumOfRecords(rsName) = = 0) {//rsName在前面已經聲明了。String rsName=“MyRMS”; 
for (int i = 0; i <6; i++) { 
RMS.addRecord(rsName, RMS.Int1, i, RMS.Long1, Integer . toString(i), RMS.Str2, "1234567890123456789",false); 
} 
}它就在RMS中增加了6條記錄,其中int1,long1,str2,WroteFlag都沒有使用,我們只是使用int2,str1(作為保留字段)和str3。 
} 
其他的操作也類似,完全可以依靠RMS類實現。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲1区2区3区视频| 91精品国产综合久久精品| 麻豆精品久久久| 日韩精品电影一区亚洲| 亚洲第一av色| 免费av成人在线| 国产最新精品免费| www.亚洲免费av| 日本道在线观看一区二区| 色婷婷国产精品久久包臀| 在线视频亚洲一区| 欧美一区二区三区爱爱| 日韩精品专区在线影院重磅| 久久亚洲精精品中文字幕早川悠里 | 亚洲私人黄色宅男| 亚洲视频小说图片| 最新高清无码专区| 调教+趴+乳夹+国产+精品| 免费在线观看不卡| 成人黄色在线网站| 欧美日韩国产欧美日美国产精品| 日韩亚洲欧美一区| 成人免费小视频| 亚洲成人资源在线| 国产精品一区三区| 欧美亚洲一区二区在线| 精品区一区二区| 亚洲色图视频网站| 琪琪久久久久日韩精品| 不卡一区中文字幕| 欧美一级片在线看| 亚洲欧美日韩在线播放| 麻豆国产精品官网| 色系网站成人免费| 337p日本欧洲亚洲大胆精品| 亚洲精品伦理在线| 国内精品在线播放| 欧美精品高清视频| 亚洲欧美在线高清| 国产一区久久久| 成人美女在线观看| 国产suv一区二区三区88区| 欧美日韩在线一区二区| 亚洲国产精品成人综合色在线婷婷| 中文字幕中文在线不卡住| 五月婷婷激情综合网| 成av人片一区二区| 欧美日韩综合不卡| 国产亚洲污的网站| 日本成人在线网站| 精品视频一区三区九区| 日韩美女啊v在线免费观看| 韩国女主播成人在线观看| 欧美三级乱人伦电影| 亚洲男人天堂av| 成人免费视频app| 国产人久久人人人人爽| 蜜桃视频第一区免费观看| 欧美日韩中文字幕一区二区| 亚洲欧美在线视频| av高清久久久| 中文一区一区三区高中清不卡| 久久成人综合网| 欧美一区二区三区电影| 日韩成人dvd| 51久久夜色精品国产麻豆| 视频一区二区三区中文字幕| 欧美亚洲国产bt| 亚洲午夜久久久久久久久电影院| 91麻豆国产在线观看| 国产精品久久久久久久久免费相片| 国产九色sp调教91| 久久久99免费| 粉嫩欧美一区二区三区高清影视| 国产日韩欧美在线一区| 国产69精品久久久久777| 国产欧美综合色| 成人av影视在线观看| 中文字幕亚洲在| 欧美综合在线视频| 日韩精品1区2区3区| 日韩欧美色电影| 高清在线成人网| 亚洲免费观看高清完整版在线| 色婷婷综合久久久久中文| 午夜精品久久久久久久久| 欧美一卡在线观看| 国产麻豆精品在线观看| 中文字幕制服丝袜一区二区三区| 91一区二区在线观看| 视频在线观看一区| 久久老女人爱爱| 99久久亚洲一区二区三区青草| 亚洲乱码国产乱码精品精的特点| 欧美三级一区二区| 韩国三级电影一区二区| 自拍偷在线精品自拍偷无码专区 | 一区二区在线免费观看| 欧美视频一区二区| 国产精一品亚洲二区在线视频| 成人欧美一区二区三区白人| 欧美日韩一本到| 国产成人啪午夜精品网站男同| 亚洲蜜臀av乱码久久精品蜜桃| 欧美一区二区免费观在线| 成人午夜免费av| 婷婷六月综合网| 国产精品伦一区| 日韩欧美亚洲国产另类| 91在线国产福利| 韩国av一区二区三区在线观看| 亚洲色图第一区| 久久久久久97三级| 91精品国产综合久久婷婷香蕉 | 亚洲国产精品99久久久久久久久| 欧美在线观看一二区| 国产综合色视频| 午夜电影久久久| 日本一区二区不卡视频| 在线观看网站黄不卡| 国产iv一区二区三区| 亚洲福利电影网| 国产精品乱码一区二区三区软件| 日韩欧美亚洲国产另类| 欧美日韩在线播放三区四区| 国产成人在线网站| 久久av老司机精品网站导航| 亚洲影院久久精品| 成人欧美一区二区三区视频网页| 精品免费视频一区二区| 欧美日韩成人综合| 色综合中文字幕国产 | 亚洲免费资源在线播放| 国产亚洲欧美日韩日本| 日韩三级在线免费观看| 欧美美女激情18p| 91福利精品视频| 91年精品国产| 成人h精品动漫一区二区三区| 国产在线一区二区综合免费视频| 日韩在线一区二区三区| 亚洲综合激情另类小说区| 亚洲乱码国产乱码精品精的特点| 国产精品久线观看视频| 欧美国产欧美综合| 日本一区二区免费在线观看视频| 欧美精品一区二区蜜臀亚洲| 欧美xxxxx牲另类人与| 日韩一区二区麻豆国产| 欧美一级一级性生活免费录像| 在线成人小视频| 欧美一级夜夜爽| 精品国产污污免费网站入口| 精品久久久网站| 久久久国产一区二区三区四区小说 | 久久久久国产精品麻豆ai换脸| 久久婷婷久久一区二区三区| 久久先锋影音av鲁色资源| 国产视频一区二区三区在线观看| 国产视频在线观看一区二区三区| 国产三级精品三级| 国产精品进线69影院| 亚洲精品一二三四区| 调教+趴+乳夹+国产+精品| 久久精品国产77777蜜臀| 国产一区高清在线| 成人免费视频视频| 色狠狠色噜噜噜综合网| 5566中文字幕一区二区电影| 日韩三级精品电影久久久| 久久精品日产第一区二区三区高清版 | 国产凹凸在线观看一区二区| 97成人超碰视| 正在播放亚洲一区| 久久精品人人做| 一区二区三区视频在线看| 人人超碰91尤物精品国产| 国产精品主播直播| 色哦色哦哦色天天综合| 日韩一区二区三区四区五区六区 | 韩国一区二区三区| eeuss鲁片一区二区三区 | 亚洲在线视频网站| 久久精品国产亚洲一区二区三区| 国产乱子伦视频一区二区三区 | 成人免费在线播放视频| 亚洲国产精品久久艾草纯爱| 激情久久五月天| 欧美怡红院视频| 欧美一二三四在线| 一区二区三区小说| 久久国产精品99久久人人澡| av在线不卡免费看| 日韩免费观看高清完整版在线观看| 国产精品三级在线观看| 蜜桃视频第一区免费观看| 91成人免费在线视频| 中文字幕国产一区二区| 奇米精品一区二区三区在线观看一| 91在线观看一区二区|