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

将数据导入不同平台上的Java程序?,java,file-io,portability,Java,File Io,Portability,我目前正在编写一个java程序,需要一些数据才能运行。 数据不是特别广泛;这是一个元素周期表中所有元素的列表,以符号和全名表示它们的原子质量,每个元素的小数点后7位 目前,我将这些数据存储在计算机上Java程序目录下的一个.txt文件中,我打算简单地读取它并将其转换为我想要的数据类型。我在我的Windows7,32位PC上这样做 然而,我希望我的程序能够在所有支持Java的平台上完全兼容,比如移动设备。 对于文件IO,我是否需要特别考虑以确保程序兼容 我不知道文件IO在Android、iPad甚

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

目前,我将这些数据存储在计算机上Java程序目录下的一个.txt文件中,我打算简单地读取它并将其转换为我想要的数据类型。我在我的Windows7,32位PC上这样做

然而,我希望我的程序能够在所有支持Java的平台上完全兼容,比如移动设备。 对于文件IO,我是否需要特别考虑以确保程序兼容

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

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

谢谢

规格:
JavaSEJRE7应用程序

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

txt文件是最可移植的/跨平台的,并且非常简单,可以读取和解析。到处使用文本文件。 为了使每个平台中的程序更容易解析,请将数据文件格式化为制表符分隔或逗号分隔等格式。 我还想知道我是否应该使用Java ME而不是SE

您必须为每个平台编写不同的代码。尽管如此,除了跨javamejavaseandroid的GUI之外,您的核心逻辑很少有变化

JavaME:用于支持Java的移动设备 JavaSE:用于桌面应用程序 Android:支持Dalvik虚拟机
好了,所有平台都可以选择执行IO工作。我对你的建议是:

txt文件是最可移植的/跨平台的,并且非常简单,可以读取和解析。到处使用文本文件。 为了使每个平台中的程序更容易解析,请将数据文件格式化为制表符分隔或逗号分隔等格式。 我还想知道我是否应该使用Java ME而不是SE

您必须为每个平台编写不同的代码。尽管如此,除了跨javamejavaseandroid的GUI之外,您的核心逻辑很少有变化

JavaME:用于支持Java的移动设备 JavaSE:用于桌面应用程序 Android:支持Dalvik虚拟机
J2SE、Android和J2ME中属于“嵌入式应用程序资源”的资源可以并且应该通过访问。网址

使用以下方法获取URL:

URL periodicTableData = this.getClass().getResource(
    "/relative/path/to/periodicTable.dat");
我假设不同的平台有不同的安装方法

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

数据。。是元素周期表中所有元素的列表,包括符号和全名,以及它们的原子质量,每个元素的小数点后约7位


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

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

使用以下方法获取URL:

URL periodicTableData = this.getClass().getResource(
    "/relative/path/to/periodicTable.dat");
我假设不同的平台有不同的安装方法

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

数据。。是元素周期表中所有元素的列表,包括符号和全名,以及它们的原子质量,每个元素的小数点后约7位


正如gt_ebuddy所提到的,CSV可能用于此目的。我倾向于使用XML。XML可以处理比现在需要的更复杂的结构,但至少在J2SE上提供了良好的内置支持,并且以UTF-8编码的XML可以跨平台阅读。

我以前读过这篇文章。没有真正回答我的问题,因为答案适用于我收集的台式计算机,因为我对移动电话的文件层次结构等一无所知。@Antierth注意到“Java SE”意味着台式电脑。安卓手机运行Dalvik,J2ME可以在其他手机上运行,也不是J2SE。我以前读过这篇文章。没有真正回答我的问题,因为答案适用于桌面计算机
我收集了一些资料,因为我对移动电话的文件层次结构等一无所知。@Antierth注意到“Java SE”意味着台式电脑。安卓手机运行Dalvik,J2ME运行在其他手机上,也不是J2SE。可以。因此,将.txt文件放在同一个“目录”中,我不知道所有应用程序文件/文件夹系统如何工作,因为运行的java代码就足够了?在安卓手机等平台上放置.txt文件方面,你有什么可以给我指点的吗?我假设不同平台有不同的安装方法?在android中,您必须将资源放入资产文件夹中。可以。因此,将.txt文件放在同一个“目录”中,我不知道所有应用程序文件/文件夹系统如何工作,因为运行的java代码就足够了?在安卓手机等平台上放置.txt文件方面,你有什么可以给我指点的吗?我假设不同平台有不同的安装方法?在android中,你必须将资源放在assets文件夹中。哦,在我问这个问题之前,我似乎应该了解更多关于编译/分发Java的知识。谢谢+感谢你提到这一点,尽管有时候没有答案的问题是不知道该问什么问题,或者不知道该去哪里找!在本例中,您可能需要阅读Java教程的4或5节,以便提炼出简单的建议。作为记录,我使用.getResourceAsStream,因此我根本不需要处理平台的文件结构。哦,在问这个问题之前,我似乎应该对编译/分发Java有更多的了解。谢谢+感谢你提到这一点,尽管有时候没有答案的问题是不知道该问什么问题,或者不知道该去哪里找!在本例中,您可能需要阅读Java教程的4或5节,以便提炼出简单的建议。作为记录,我使用.getResourceAsStream,因此我根本不需要处理平台的文件结构。