代码之家  ›  专栏  ›  技术社区  ›  Daniel Schneller

固定长度记录文件的Java(ME)库

  •  1
  • Daniel Schneller  · 技术社区  · 15 年前

    我正在寻找一个可以在JavaME(基础配置文件1.1,CDC)上运行的库,并且允许我基本上沿着

    FILE OF type;
    

    在Pascal。

    背景:我需要一个大约500.000条记录的大集合(大约100MB),用于快速按已知索引值查找。我真的要自己写吗?像Derby这样的数据库太大了,带来了很多特性(存储过程、任何人?)我不需要。

    理想情况下,我只想定义一个类,其中包含一些基于基元类型和字符串的字段,作为一个值持有者对象,并将它们保存在一个文件中,如果需要的话,我可以手动恢复。这就是为什么我不太喜欢序列化的原因。过去,我曾多次与无法恢复的损坏的二进制数据文件作斗争。

    2 回复  |  直到 14 年前
        1
  •  0
  •   Kevin Wright    15 年前

    这里最大的问题是在文件中的字段名和列之间建立对应关系,因为您不应该假定类布局与源文件中的字段顺序匹配。

    如果文件要包含一个标题行,那么使用反射/内省是一个简单的问题,不应该花费超过一天的时间来实现自己。

    或者,您必须使用某种类型的注释来指定每个字段在文件中的显示位置。

    您是否考虑过使用XStream的替代文本序列化方法,如csv、json或xml?这些解决方案可以避免二进制文件损坏的风险,使您能够更快地启动和运行,但也可能会增加内存占用,这可能是一个问题,因为您的目标是移动设备。

        2
  •  0
  •   Daniel Schneller    14 年前

    环顾四周一段时间后,我终于来了 xBaseJ 来自sourceforge。它依赖于 java.nio 这通常不包括在javame cdc配置文件中,但我们有一个承包商将相关部件连接到移动J9vm。有了这一点,我们现在将在DBASEIII兼容文件的基础上构建我们的应用程序。除了速度相当快,甚至在移动平台上,这让我们可以访问大量可以处理这种格式的工具,而无需向非技术人员传授他们不喜欢的基于JDBC的DB管理工具。

    最近有一本电子书,叫做“你对Xbasej的了解最少”,也可以从项目的网站上免费获得。