⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rmshandler.java

📁 《j2me开发精解〉(詹健飞)CD-rom附带源码。用netbeans
💻 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 + -