0

UUID の保存について質問があります。Java を使用して UUID を生成し、保存して、次にアプリケーションを実行したときに取得できるようにしたいと考えています。

私が構築した .NET アプリケーションでは、これと似たようなことをしています。Windows レジストリを使用して、UUID とその他すべての設定を保存しています。ただし、この Java アプリケーションはクロスプラットフォーム互換であると想定されています。これが問題です。明らかに、他のオペレーティング システムでは、このようなタスク用の Windows レジストリはありません。

この問題に対する解決策は 1 つありますが、もう少し洗練された方法が必要です。私の現在の解決策は、アプリケーションのディレクトリにテキスト ファイル (のような名前unique.txt) を保存し、実行時にそれを読み取ることです。

その解決策についての私の不満は次のとおりです。

  • ユーザーがアプリケーションを新しいディレクトリに移動した場合、プログラムは新しい UUID と設定ファイルを生成する必要があります。
  • ユーザーが自分のディレクトリにある設定ファイルを見ることができるという事実は好きではありません。

ソリューションが満たす必要がある条件は次のとおりです。

  • ソリューションは、UUID 値 (および場合によっては他の変数) を実行時に取得および変更できるように格納できる必要があります。
  • アプリケーションが削除されてから再ダウンロードされた場合、以前のインストールの値は引き続き取得できるはずです。
  • 値を格納するために使用されるファイルは、アプリケーションのディレクトリに表示されるべきではありません (ユーザー ディレクトリを設定ファイルで混乱させても意味がありません)。
  • ユーザーがアプリケーションを別のディレクトリに移動した場合でも、アプリケーションは以前の設定ファイルを取得できるはずです。設定はディレクトリに依存しないでください。

/設定ファイルをルート ディレクトリ ( UNIX およびC:\Windows) に保存することを考えました。ただし、私の経験では、通常、ルート ディレクトリへの書き込みには昇格されたアクセス許可が必要です。また、ルート ディレクトリはこれに最適な場所ではないように感じます。

Javaにこのようなことを行うためのメソッドが組み込まれている場合、誰かが私をその方向に向けてくれることを大いに感謝します. そうでなければ、誰かが何らかのガイダンスを提供できれば、それも素晴らしいことです.

この質問が重複していたら申し訳ありません。このようなものを検索しましたが、答えが見つかりませんでした。質問について不明な点がある場合は、コメントを追加してください。質問を修正して明確にします。

前もって感謝します。

4

2 に答える 2

2

Preferences APIは、必要なものを提供する必要があります。システム全体に共通の設定が必要な場合は、 を参照してくださいsystemNodeForPackage。このようなもの(テストされていません):

class HardwareId {
    public UUID read() {
        Preferences pref = Preferences.systemNodeForPackage(HardwareId.class);
        String uuid = pref.get("UUID", null);
        if (uuid == null) {
            uuid = UUID.randomUUID().toString();
            pref.put("UUID", uuid);
            pref.flush();
        }
        return UUID.fromString(uuid);
    }
}
于 2014-10-15T19:39:28.617 に答える
0

値を格納するデータベースを検討しましたか。

http://en.wikipedia.org/wiki/Apache_Derby

ウィキペディアから「Apache Derby (以前は IBM Cloudscape として配布されていた) は、Apache Software Foundation によって開発されたリレーショナル データベース管理システム (RDBMS) であり、Java プログラムに埋め込んでオンライン トランザクション処理に使用できます。」

于 2014-10-15T19:42:28.930 に答える