Frage

Meine Java-Anwendung ist das Speichern Sachen in ‚user.home‘ aber auf Fenster scheint dies nicht der richtige Weg zu seinen Anwendungsinformationen zu speichern (als ein Freund mir gesagt). Eine andere Option ist mit der api Vorlieben, aber es ist nicht möglich, die hsqldb Lage mit Hilfe des Profil api einzurichten. Außerdem möchte ich alle Dateien im selben Ordner (lokale Datenbank, Konfiguration, Cache, ...) sein.

Ich interessiere mich für einige Beispiel-Code oder einen Rahmen, der Pflege von os-spezifische Dinge nimmt.

War es hilfreich?

Lösung

Auf meinem WinXP Pro SP3-System zu user.home Punkten C:\Documents and settings\<username> Viele Anwendungen nur speichern ihre Daten dort (anstelle dieser Pfad + Anwendungsdaten, aber einige andere gehen, um dort), ein Verzeichnis in Unix-Stil zu schaffen, das heißt. dot + Anwendungsnamen. (Beispiele:. .antexplorer, .sqlworkbench, .squirrel-SQL, .SunDownloadManager, .p4qt, .gimp-2.4, usw.)

Sieht aus wie eine anständige, gängige Praxis ...

Andere Tipps

Es ist ungewöhnlich, dass ein Fenster App-Daten in user.home zu speichern, aber nicht „falsch“. Windows-Anwendungen lieben ihre Daten überall zu verbreiten (ein Bit in der Registry, ein wenig in der Anwendung installieren das Verzeichnis, ein wenig in dem Windows-Verzeichnis, ein wenig in System32, ein bisschen hier und ein wenig dort). Am Ende ist es dadurch unmöglich sauber Sicherung oder etwas entfernen, die in der berühmten „Windows rot“ führt (das heißt Sie alle paar Monate neu installieren).

Wie auch immer. Wenn Sie wirklich nicht wollen, user.home verwenden (und ich sehe keinen Grund, nicht zu), verwenden Sie Code wie dies von Apache commons-lang , um herauszufinden, ob Sie unter Windows ausführen. Wenn dies ergibt wahr, ein Verzeichnis-Auswahldialog öffnet sich, wo der Benutzer angeben können, wo sie wollen, dass ihre Daten speichern.

Speichern Sie diese Informationen in den Einstellungen und verwenden Sie diesen Pfad das nächste Mal, wenn Sie Ihre App gestartet wird. Auf diese Weise können Benutzer angeben, wo sie ihre Daten möchten und nur ein Bit an Information in den Prefs verlassen müssen.

Für eine Anwendung „foo“ Ich würde ein Verzeichnis innerhalb user.home dem Namen „.foo“. Für Windows wird es etwas seltsam aussehen, aber fast niemand sieht immer in diesem Verzeichnis (und es ist mit obskuren Verzeichnissen sowieso gefüllt) und auf Linux / Solaris / ... wird es in einem versteckten Verzeichnis führen, die nicht die Benutzer Home-Verzeichnis nicht Krempel visuell.

dynamisch lesen (aus dem Code), um den Wert von APPDATA Umgebungsvariable, und speichern Sie Ihre Konfigurationsdateien in %APPDATA%\\.myapp\config

==> Wert ist plattformabhängig, verwenden Sie keine hartcodierte Pfade, immer die env lesen. var.

Das Problem ist nicht Wiindows aber der Standard-Java-Setup.

Lange Diskussion http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4787931> hier

Ich würde das oben auf ein '-D myLoc =% USERPROFILE% Eigentum auf der Kommandozeile raten Kommissionierung.

Beachten Sie, dass Sie nur eine „USERPROFILE“, wenn der Benutzer eine Desktop-Login hat, bedeutet dies nicht fertig, wenn der Benutzer in remotly mit citrix angemeldet oder ähnlicher oder via ssh, auch, Desktops mess around mit dieser Einstellung coprporate und kann so eingestellt, es zu etwas unbrauchbar.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top