7

私のJavaアプリケーションは「user.home」に何かを保存していますが、Windowsではこれはアプリケーション情報を保存するための正しいパスではないようです(友人が私に言ったように)。もう 1 つのオプションは設定 API を使用することですが、設定 API を使用して hsqldb の場所を設定することはできません。また、すべてのファイルを同じフォルダー (ローカル データベース、構成、キャッシュなど) で使用できるようにします。

OS固有のものを処理するサンプルコードまたはフレームワークを探しています。

4

5 に答える 5

3

私のWinXP Pro SP3システムでは、user.homeは多くのアプリケーションを指しC:\Documents and settings\<username> 、データをそこに保存するだけです(このパス+アプリケーションデータの代わりに、他のいくつかはそこに行きます)、Unixスタイルのディレクトリを作成します。ドット + アプリケーション名 (例: .antexplorer、.sqlworkbench、.squirrel-sql、.SunDownloadManager、.p4qt、.gimp-2.4 など)。

まともな、一般的な慣習のように見えます...

于 2008-12-02T09:54:17.887 に答える
1

ウィンドウ アプリが user.home にデータを保存するのは珍しいことですが、「間違っている」わけではありません。Windows アプリケーションは、データをあらゆる場所に分散させるのが大好きです (レジストリに少し、アプリケーションのインストール ディレクトリに少し、Windows ディレクトリに少し、System32 に少し、ここに少し、そこに少し)。結局、これにより、何かをきれいにバックアップしたり削除したりすることが不可能になり、有名な「Windows の腐敗」が発生します (つまり、数か月ごとに再インストールする必要があります)。

ともかく。本当に user.home を使用したくない場合 (そして、使用しない理由がないと思います)、Apache commons-lang の次のようなコードを使用して、Windows で実行しているかどうかを判断してください。これが true の場合は、ユーザーがデータを保存する場所を指定できるディレクトリ選択ダイアログをポップアップ表示します。

この情報を環境設定に保存し、次回アプリを起動するときにこのパスを使用します。このようにして、ユーザーは自分のデータが必要な場所を指定でき、設定に 1 ビットの情報を残すだけで済みます。

于 2008-12-02T08:48:13.200 に答える
1

APPDATA環境変数の値を (コードから) 動的に読み取り、構成ファイルを%APPDATA%\\.myapp\config

==> 値はプラットフォームに依存します。ハードコードされたパスを使用しないでください。常に env を読み取ります。変数。

于 2010-10-26T18:07:39.283 に答える
1

アプリケーション「foo」の場合、user.home 内に「.foo」という名前のディレクトリを作成します。Windowsの場合は少し奇妙に見えますが、そのディレクトリを調べる人はほとんどいません(とにかくあいまいなディレクトリでいっぱいです)。Linux / Solaris / ...では、ユーザーのホームディレクトリを乱雑にしない隠しディレクトリになります。視覚的に。

于 2008-12-02T09:00:51.210 に答える
0

問題は Windows ではなく、標準の Java セットアップです。

長い議論 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4787931>こちら

コマンドラインの「-D MYLOC=%USERPROFILE%」プロパティでこれを選択することをお勧めします。

ユーザーがデスクトップ ログインを行った場合にのみ「USERPROFILE」が取得されることに注意してください。ユーザーが citrix などを使用して、または ssh を介してリモートでログインした場合、これは設定されません。使えないものに。

于 2008-12-02T09:15:46.857 に答える