2

私は現在、実行するためにいくつかのデータを必要とするJavaプログラムを書いています。
データは特に広範ではありません。これは、周期表のすべての元素(記号とフルネームの両方)とそれらの原子量のリストであり、それぞれ小数点以下約7桁までです。

現在、このデータは、コンピューターのJavaプログラムのディレクトリにある.txtファイルに保存されています。このデータを読み取り、目的のデータ型に操作するだけです。これは、Windows 7、32ビットPCで行います。

ただし、モバイルデバイスなど、Javaをサポートできるすべてのプラットフォームでプログラムが完全に互換性があることを望んでいます。
プログラムの互換性を確保するために、ファイルIOに関して特別な考慮事項はありますか?

AndroidやiPad、さらにはMacなどのプラットフォームでファイルIOがどのように機能するのかわかりません。プログラムをすべてのJava互換プラットフォームで実行できるようにするには、このデータインポートをどのように実行する必要がありますか?

私が検討した1つの可能性は、これらのデータ型を「手動で」コードに埋め込むことです。つまり、私はファイルからデータをインポートしませんが、代わりにそれをプログラムに直接コーディングします(これにより、コンパイル後にデータが変更できなくなりますが、これは悪い習慣だと思います)。
また、SEの代わりにJavaMEを使用する必要があるかどうかも疑問に思いました。

ありがとう!


仕様:
Java SE(jre 7)アプリケーション。

4

2 に答える 2

3

「埋め込まれたアプリケーションリソース」であるJ2SE、Android、および(おそらく)J2MEのリソースには、を介してアクセスできます(したがって、アクセスする必要があります)。URL。

次のようなものを使用して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. 各プラットフォームのプログラムによる解析を容易にするために、データファイルをタブ区切りまたはカンマ区切りなどにフォーマットします。

「SEの代わりにJavaMEを使うべきかどうかも疑問に思いました。」

プラットフォームごとに異なるコーディングを行う必要があります。ただし、JavaME-JavaSE-Android全体でコアロジック(GUIを除く)に変更はほとんどありません。

  • JavaME:Javaでサポートされているモバイルデバイス用
  • JavaSE:デスクトップアプリケーション用
  • Android:DalvikVMがサポートされています
于 2012-04-07T08:31:25.723 に答える