2

我目前正在编写一个需要一些数据才能运行的 java 程序。
数据不是特别广泛;它是元素周期表中所有元素(符号和全名)与其原子质量的列表,每个元素最多保留大约 7 个小数位。

目前,我将这些数据存储在我计算机上 Java 程序目录中的一个 .txt 文件中,我打算简单地读取它并将其操作为我想要的数据类型。我在我的 Windows 7 32 位 PC 上执行此操作。

但是,我希望我的程序完全兼容所有可以支持 Java 的平台,例如移动设备。
关于文件 IO,我需要特别考虑以确保程序兼容吗?

我不知道文件 IO 在 Android 或 iPad 甚至 Mac 等平台上是如何工作的。我应该如何执行此数据导入,以便程序仍然可以在所有 Java 兼容平台上运行?

我考虑过的一种可能性是将这些数据类型“手动”嵌入到代码中。IE; 我没有从文件中导入数据,而是直接将其编码到程序中(这会使数据在编译后无法更改,我觉得这是不好的做法)。
我也想知道我是否也应该使用 Java ME 而不是 SE。

谢谢!


规格:
Java SE (jre 7) 应用程序。

4

2 回答 2

3

J2SE、Android 和(可能)J2ME 中作为“嵌入式应用程序资源”的资源可以(因此应该)通过. 网址。

使用以下方式获取 URL:

URL periodicTableData = this.getClass().getResource(
    "/relative/path/to/periodicTable.dat");

我假设不同平台有不同的安装方法?

“静态”资源,即不会改变的资源,可以添加到 Jar 中。如果该 Jar 在应用程序的运行时类路径中,则可以使用getResource().

数据 .. (is).. 元素周期表中所有元素的列表(包括符号和全名)与它们的原子质量,每个元素最多保留约 7 个小数位。

正如 gt_ebuddy 所提到的,可能会为此使用 CSV。OTOH 我倾向于使用 XML。XML 可以处理比这里立即需要的更复杂的结构,但确实提供了良好的内置支持的优势(至少在 J2SE 上),并且(以 UTF-8 编码)将可以跨平台读取。

于 2012-04-07T08:38:40.760 回答
1

AFAIK,所有平台都可以选择执行 IO 工作。我的建议是:

  1. txt 文件是最便携/跨平台的,并且足够简单,易于阅读和解析。到处使用文本文件。
  2. 为了使每个平台中的程序更容易解析,请将您的数据文件格式化为制表符分隔或逗号分隔等。

“我还想知道我是否也应该使用 Java ME 而不是 SE。”

您必须为每个平台编写不同的代码。不过,跨 JavaME-JavaSE-Android 的核心逻辑(GUI 除外)几乎不会发生变化。

  • JavaME:适用于支持 Java 的移动设备
  • JavaSE:用于桌面应用程序
  • Android : 支持 Dalvik VM
于 2012-04-07T08:31:25.723 回答