📄 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 + -