J2ME RecordStore 中的数据不会跨会话持续存在

2023-12-09

我正在使用 J2ME 构建一个移动应用程序,我发现我写入 RecordStore 的数据可以在程序仍在运行时访问,但在退出并重新启动后会丢失。没有抛出异常,数据只是丢失了。

UPDATE:感谢大家的建议。我在 Windows 7 上使用 NetBeans。我不确定它使用的是我之前安装的 WTK 版本还是在其他地方安装的另一个版本。我检查了我的 WTK 文件夹中是否有 Pavel 所写的文件,但找不到它们。现在我正在测试手机上需要持久性的功能以及模拟器中的其他所有内容,但如果能够在模拟器中测试所有内容当然会更好。

private RecordStore recordStore = null;

public MyMIDlet() {
    readStuff(); // output: nothing found in recordStore :(
    saveStuff();
    readStuff(); // output: stuff
}

private void readStuff() {
    try {
        recordStore = RecordStore.openRecordStore(REC_STORE, true);
        int n = recordStore.getNumRecords();
        String stuff;

        if (n == 0) {
            stuff = "nothing found in recordStore :(";
        }
        else {
            stuff = new String(recordStore.getRecord(1));
        }

        System.out.println(stuff);
    }
    catch (Exception e) {
        System.out.println("Exception occured in readStuff: " + e.getMessage());
    }
    finally {
        if (recordStore != null) {
            try {
                recordStore.closeRecordStore();
            }
            catch (Exception e) {
                // ignore
            }
        }
    }
}

private void saveStuff() {
    try {
        recordStore = RecordStore.openRecordStore(REC_STORE, true);
        int n = recordStore.getNumRecords();
        byte[] stuff = "stuff".getBytes();
        recordStore.addRecord(stuff, 0, stuff.length);
    } catch (Exception e) {
        System.out.println("Exception occured in saveStuff: " + e.getMessage());
    } finally {
        if (recordStore != null) {
            try {
                recordStore.closeRecordStore();
            } catch (Exception e) {
                // ignore
            }
        }
    }
}

如果您使用 Sun WTK,它会在其“appdb”文件夹中创建一个名为“in.use”的文件:



C:\WTK25\appdb\DefaultColorPhone\in.use
  

如果您以不寻常的方式关闭模拟器(例如杀死一个进程),它不会删除它,并且下次运行模拟器时,它会创建临时文件夹来存储数据:



C:\WTK25\appdb\temp.DefaultColorPhone1
  

以这种方式启动时,它应该在控制台中打印:“Running with storage root temp.DefaultColorPhone1”。

我修复了它,在我的“.bat”文件中添加了一行,用于每次模拟器运行时删除“in.use”文件。但同时运行多个模拟器时应小心。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

J2ME RecordStore 中的数据不会跨会话持续存在 的相关文章

随机推荐

  • 嵌套的 For-Each 会变平吗?

    有一个对象数组 其中每个对象都有一个对象集合 其中每个对象都有一个字符串属性 当我进行嵌套迭代时 TheArray TheCollection TheProperty 看起来我最终得到的不是字符串数组的数组 而是一维字符串数组 这是设计使然
  • 正则表达式匹配最后一个字符

    我有以下几行 data text javascript base64 Ly8gSGVyZdsdsd 5 data text javascript base64 Ly8gSGVyZdsdsd 2 data text javascript ba
  • Django / vBulletin 单点登录

    在同一域上为 Django 项目和 vBulletin 板进行单点登录 SSO 的最简单方法是什么 我有一个现有的 vBulletin 用户数据库 我研究过 Django 的远程用户后端和 vBulletin 的vBSSO但我还没有找到完整
  • java中带单引号的SQL查询

    我有一个想要在 java 中运行的查询 SELECT md5 CONCAT md5 clear password salt 它让我的应用程序连接并使用与我的论坛相同的用户名 密码 它的工作但是当salt包含字符 它给出一个错误 You ha
  • 在 Flutter 中更改主图像尺寸而不触及占位符图像大小

    我有一个关于 flutter 中的图像和预加载的小问题 如何在不改变占位符大小的情况下更改图像覆盖的适合值 Widget primaryVideoImg img return Flex direction Axis horizontal c
  • 确定作为 n 的函数执行递增变量计数的语句的频率

    好吧 我是分析算法的新手 非常感谢任何可以分享如何解决此问题的有用提示 我试图确定 count 作为 n 的函数增加了多少次 我已经在 ide 中运行它 对于值 1 7 输出为 1 3 6 10 15 21 28 我只是不确定如何将其写为
  • 如何保存python IDLE的自定义首选项?

    我在不同的位置有几台计算机 虽然我没有在 IDLE 中编码 但它始终在后台运行 用于小型测试 调试和研究任务 我在家里配置了 IDLE 自定义突出显示 按键设置等 将我的设置保存到外部文件中并将这些设置安装到我正在使用的任何计算机上会非常方
  • 如何访问脚本组件内的 ssis 包变量

    如何访问我在数据流 gt 脚本组件 gt 我的 C 脚本和 SSIS 包中使用的 C 代码中的变量 我已经尝试过 但也不起作用 IDTSVariables100 varCollection null this VariableDispens
  • 如何使用printf显示off_t、nlink_t、size_t等特殊类型?

    在我的程序中 我统计他们想要的文件并将数据发送过去 统计数据的字段struct都是特殊类型 struct stat dev t st dev ID of device containing file ino t st ino inode n
  • python,从(1,n)中随机选择#k个数字,不包括列表中的数字

    对于给定的 except list 3 5 8 n 30 k 5 我想在 1 到 30 之间选择 5 k 个随机数 但我不应该在排除列表中选择数字 假设 except list n 可能很大 当不需要排除时 很容易得到k个随机样本 rand
  • CSS 链接边框样式不适用于 a:visited

    问题在于链接边框样式 我可以在悬停时更改它 但边框 visited不起作用 这是我所拥有的示例 a link color 536DFE text decoration none border bottom dashed 1px transi
  • WCF WSDL + 可空属性

    我有一个 WCF 服务扁平化 WSDL 另一端的消费者告诉我 nillable true 属性正在将它们连接起来 我尝试在服务合同中设置 EmitDefaultValue false 但我没有注意到行为有任何变化 诚然 我以前从未深入研究过
  • 如何在 UICollectionViewCell 中设置 UILabel

    我有一个带有 UIViewController 的应用程序 其中包含 UICollectionView IBOutlet UICollectionView 中的单元格是 MyCustomCell 并使用此方法设置其 UILabel void
  • .NET 的 RSS 解析器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 对于 NET 中的 RSS
  • 如何使用 Three.js 绘制平行线?

    我对矩阵变换的概念很陌生 我尝试在正交方向上偏移一条线 我想到的是 line translate offsetPixels new THREE Vector3 1 1 0 它沿着向量中定义的轴平移一条线 所以我的问题是如何定义向量中的轴以获
  • 在不同端点上实现多个协定的服务类的 WCF 配置

    我有一个MyService类实现IService1 and IService2接口 我想在两个不同的端点上公开这两个合约 例如 IService1暴露于 Service S1 IService2暴露于 Service S2 这样的配置会是什
  • 如何在vb.net中解码url

    此行表示服务器未声明 Dim DecodedString As String server UrlDecode context Request Form DeckName 我在顶部导入了 system web 似乎无法弄清楚为什么它不起作用
  • 为什么我的 hello world 二进制文件大部分为零?

    我已经编译了 include
  • 将文件分成小块复制

    我想以小块的形式复制文件 如果需要的话取消复制操作 我正在尝试遵循此处未标记的解决方案 如何复制文件并具有取消复制的功能 但我得到一个 0 字节文件 我做错了什么 Public Class Form1 Dim cancelled As Bo
  • J2ME RecordStore 中的数据不会跨会话持续存在

    我正在使用 J2ME 构建一个移动应用程序 我发现我写入 RecordStore 的数据可以在程序仍在运行时访问 但在退出并重新启动后会丢失 没有抛出异常 数据只是丢失了 UPDATE 感谢大家的建议 我在 Windows 7 上使用 Ne