将数据导入不同平台上的Java程序?

时间:2012-04-07 08:19:17

标签: java file-io portability

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

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

但是,我希望我的程序能够在所有支持Java的平台上完全兼容,例如移动设备 我是否需要对文件IO进行特殊考虑以确保程序兼容?

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

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

谢谢!


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

2 个答案:

答案 0 :(得分:3)

J2SE,Android和(可能)J2ME中的“嵌入式应用程序资源”资源可以(因而应该)通过它来访问。 URL。

使用以下内容获取网址:

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

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

'静态'资源,不变的资源,可以添加到Jar中。如果该Jar位于应用程序的运行时类路径中,则可以使用getResource()找到它们。

  

数据..(是)..周期表中所有元素的列表(符号和全名)与原子质量相对应,每个元素最多约7个小数位。

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

答案 1 :(得分:1)

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

  1. txt文件是最便携/跨平台的,并且足够简单,可以读取和解析。到处使用文本文件。
  2. 要使每个平台中的程序更容易解析,请将数据文件格式化为制表符分隔或逗号分隔等。
  3. “我也想知道我是否应该使用Java ME而不是SE。”

    您必须为每个平台编写不同的代码。但是,JavaME-JavaSE-Android中的核心逻辑(GUI除外)几乎没有变化。

    • JavaME:适用于Java支持的移动设备
    • JavaSE:用于桌面应用程序
    • Android:支持Dalvik VM