2011-02-21 33 views
1

私は、次のニーズを満たすデスクトップアプリケーションの設定を保存するためのパスを取得するだけの溶液(例えばsqliteのデータベース)が必要です。Javaアプリケーションに環境設定を保存する場所は?

  • クロスプラットフォーム
  • 瓶からと「通常」の呼び出し
から作品を

X.class.getProtectionDomain().getCodeSource().getLocation()java.util.pref.Preferences クラスを使用してコードベースパスを取得するのに多くの時間を費やしていますが、戻り値が異なる場合があります。

「クロスプラットフォーム」は、定義が難しい種類です。 「各プラットフォームのベストプラクティス」と呼ばれるソリューションは、実現するのが容易ではありません。ユーザー固有のデータと共有データを区別することは賢明です。

答えて

9

java.util.prefs.Preferencesは適切な方法です。それは完全にうまく動作します(私はデスクトップアプリケーションで問題なく使用しています)。これはクロスプラットフォームであり、余分な瓶がなくても利用可能です。また、ユーザー固有データとグローバル・データを区別します。おそらく、あなたの特定の問題点を明らかにして(または別の質問をして)

もちろん、java.util.Propertiesを使用して、ファイルをSystem.getProperty("user.dir")に保存することもできます。

+0

'System.getProptery(" user.dir ")で提案されているように**〜/ .appdata **の下にアプリケーションデータを保存することは、UNIXシステムにとっては良いアプローチですが、クロスプラットフォームの側面はどこですか? – phineas

+0

@phineasはすべてのプラットフォームでユーザーディレクトリを返します。ウィンドウの 'C:/ documents and settings/ /'になります。 – Bozho

0

System.getProperty("user.dir")は、最新のシステムではユーザーディレクトリへのパスを返します。

関連する問題