我目前正在编写一个需要运行一些数据的java程序 数据不是特别广泛;它是元素周期表中所有元素的列表(符号和全名),以及它们的原子质量,每个元素最多约7个小数位。
目前,我将这些数据存储在我的Java程序目录中的计算机上的.txt文件中,我打算简单地将其读取并将其操作为我想要的数据类型。我在Windows 7,32位PC上执行此操作。
但是,我希望我的程序能够在所有支持Java的平台上完全兼容,例如移动设备 我是否需要对文件IO进行特殊考虑以确保程序兼容?
我不知道文件IO如何在Android或iPad甚至Mac等平台上运行。 我应该如何执行此数据导入,以便程序仍然可以在所有Java兼容平台上运行?
我考虑过的一种可能性是将这些数据类型“手动”嵌入到代码中。
即;我不从文件中导入数据,而是直接将其编码到程序中(这会使编译后的数据不可更改,我觉得这是不好的做法)。
我也想知道我是否应该使用Java ME而不是SE。
谢谢!
规格:
Java SE(jre 7)应用程序。
答案 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工作。我的建议是:
“我也想知道我是否应该使用Java ME而不是SE。”:
您必须为每个平台编写不同的代码。但是,JavaME-JavaSE-Android中的核心逻辑(GUI除外)几乎没有变化。