?? rmshandler.java
字號:
package com.j2medev.chapter4;
import javax.microedition.rms.*;
public class RMSHandler {
private RecordStore rs = null;
//內部類的方式實現SearchFilter,通過比較記錄的開始字母決定返回的子集
private class SearchFilter implements RecordFilter{
private String query = null;
public SearchFilter(String query){
this.query = query;
}
public boolean matches(byte[] data){
return new String(data).startsWith(query);
}
}
//內部類的方式實現SearchComparator,決定返回子集的排列順序
private class SearchComparator implements RecordComparator{
public int compare(byte[] data1,byte[] data2){
int i = new String(data1).compareTo(new String(data2));
if(i < 0){
return RecordComparator.FOLLOWS;
}else if(i == 0){
return RecordComparator.EQUIVALENT;
}else if(i > 0){
return RecordComparator.PRECEDES;
}
return i;
}
}
public RMSHandler() {
openDatabase();
}
//打開RecordStore對象
public void openDatabase(){
try{
rs = RecordStore.openRecordStore("search",true);
if(rs.getNumRecords() <= 0){
initDatabase();
}
}catch(RecordStoreException e){
e.printStackTrace();
}
}
//初始化RecordStore對象,向其中添加8條記錄。
public void initDatabase(){
String[] data = new String[]{"h1","h2","c1","c2","m1","m2","d1","d2"};
try{
for(int i = 0;i<data.length;i++){
byte[] array = data[i].getBytes();
rs.addRecord(array, 0, array.length);
}
}catch(RecordStoreException e){
e.printStackTrace();
}
}
//使用RecordEnumeration來訪問記錄。
public String[] getResult(String query){
try{
//這里返回的記錄是符合SearchComparator的排列順序并經過SearchFilter篩選的記錄
RecordEnumeration re = rs.enumerateRecords(new SearchFilter(query), new SearchComparator(), false);
if(re.numRecords() <= 0){
return null;
}else{
String[] result = new String[re.numRecords()];
int i = 0;
//循環記錄集合放入result數組中
while(re.hasNextElement()){
result[i++] = new String(re.nextRecord());
}
return result;
}
}catch(RecordStoreException e){
e.printStackTrace();
}catch(NullPointerException e){
e.printStackTrace();
}
return null;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -