简单封装MIDP RMS操作

原创 2006年06月19日 09:29:00

许多MIDP应用程序需要简单的存储配置信息,对此,简单封装一个RMSHandler,实现一条记录的读写:

package com.crackj2ee.midp.rms;
import java.io.*;
import javax.microedition.rms.*;
public final class RMSHandler {
    private static final String RECORD_STORE_NAME = "RmsDaTa";
    public static boolean loadUniqueRecord(Persistentable p) {
        byte[] data = loadUniqueRecord();
        if(data==null)
            return false;
        DataInputStream input = null;
        try {
            input = new DataInputStream(new ByteArrayInputStream(data));
            p.load(input);
            return true;
        }
        catch(IOException ioe) {
            return false;
        }
        finally {
            try {
                input.close();
            }
            catch (Exception e) {}
        }
    }
    public static boolean saveUniqueRecord(Persistentable p) {
        DataOutputStream output = null;
        try {
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            output = new DataOutputStream(bytes);
            p.save(output);
            return saveUniqueRecord(bytes.toByteArray());
        }
        catch(IOException ioe) {
            return false;
        }
        finally {
            if(output!=null)
                try {
                    output.close();
                }
                catch (Exception e) {}
        }
    }
    private static byte[] loadUniqueRecord() {
        RecordStore rs = null;
        RecordEnumeration re = null;
        try {
            rs = RecordStore.openRecordStore(RECORD_STORE_NAME, true);
            if(rs.getNumRecords()==0)
                return null;
            re = rs.enumerateRecords(null, null, false);
            if(re.hasNextElement())
                return re.nextRecord();
            return null;
        }
        catch(RecordStoreException rse) {
            return null;
        }
        finally {
            if(re!=null) {
                re.destroy();
            }
            if(rs!=null) {
                try {
                    rs.closeRecordStore();
                }
                catch (Exception e) {}
            }
        }
    }
    private static boolean saveUniqueRecord(byte[] data) {
        RecordStore rs = null;
        RecordEnumeration re = null;
        try {
            rs = RecordStore.openRecordStore(RECORD_STORE_NAME, true);
            re = rs.enumerateRecords(null, null, false);
            if(re.hasNextElement()) {
                rs.setRecord(re.nextRecordId(), data, 0, data.length);
            }
            else {
                rs.addRecord(data, 0, data.length);
            }
            return true;
        }
        catch(RecordStoreException rse) {
            return false;
        }
        finally {
            if(re!=null) {
                re.destroy();
            }
            if(rs!=null) {
                try {
                    rs.closeRecordStore();
                }
                catch (Exception e) {}
            }
        }
    }
}

需要持久化的类实现一个Persistentable接口:

package com.crackj2ee.midp.rms;
import java.io.*;
public interface Persistentable {
    void save(DataOutputStream output) throws IOException;
    void load(DataInputStream input) throws IOException;
}

读写数据时,按照顺序依次读写即可,例如:

class MyForm extends Form implements Persistentable {

    private int score;
    private String username;


    public MyForm() {
        super("Test");
        load(this);
    }



    public void save(DataOutputStream output) throws IOException {
        output.writeInt(score);
        output.writeUTF8(username);
    }
    public void load(DataInputStream input) throws IOException {
        score = input.readInt();
        username = input.readUTF8();
    }

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

MIDP2.0: 操作像素数据

  • 2004-08-11 16:38
  • 644KB
  • 下载

J2ME RMS 永久存储 操作

终于实现J2ME永久存储,对上一篇文章中所说的不能永久存储的自我否定!  package j2me; import javax.microedition.rms.RecordEnumeratio...

MIDP2.0中操作图片像素

  • 2008-04-14 17:23
  • 124KB
  • 下载

MIDP2.0: 操作像素数据

  • 2005-11-23 09:30
  • 666KB
  • 下载

数据库和 MIDP

数据库和 MIDP,第三部分:使用数据映射 本系列中的 第二部分介绍了数据映射的基本知识。您学会了如何在字节数组(byte array)中存储原始数据类型的数值,如何使用流向记录库(recordst...

java中Excel操作的简单封装

导入封装: package com.test.excel; import java.io.File; import java.io.IOException; import java.util....

CEDB操作的简单封装

  • 2013-12-18 13:03
  • 39KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)