2009-08-21 5 views
4

Ich habe eine SWT Java-Anwendung, die auf Windows XP/Vista/7 und Mac OS X läuft derzeit eine Config-Datei Ich rette:Der beste Ort, um Programmkonfigurationsdateien unter Windows und OS X mit Java zu speichern?

System.getProperty ("user.home") + Dateinamen

Mit den Änderungen in der Sicherheit in Windows Vista und Windows 7 scheint dies nicht der beste Ort, um es zu speichern.

Diese Datei speichert Informationen wie Registrierungsschlüssel Informationen und es ist ärgerlich für meine Benutzer, wenn die Datei nicht gespeichert werden kann oder gelöscht wird.

Gibt es einen besseren Pfad, den ich verwenden sollte?

Was ist der bevorzugte Pfad für Anwendungsdaten pro Benutzer unter Mac OS X?

Antwort

2

Was ändert sich in der Sicherheit? Ich verstehe, dass sie verboten, in Programmdateien zu schreiben, ich wusste nicht, dass sie verbieten, in Benutzerhaus zu schreiben.
Es wäre eine ernsthafte Kompatibilität Pause, habe ich eine Reihe von Anwendungen schreiben entweder direkt eine Datei oder in einem Ordner ("versteckt" im Unix-Modus, dh mit einem Punkt vorangestellt).
Jetzt scheint es "freundlicher" zu schreiben in Application Data folder als eine Reihe anderer Anwendungen (aber selten Cross-Plattform-Anwendungen, die die vorherige Lösung zu verwenden scheinen ...), aber die genaue Position scheint schwer zu finden Java, und würde eine Plattformerkennung benötigen, um etwas anderes auf anderen Plattformen zu tun.

Eine Alternative scheint zu sein, die Preferences API zu verwenden, dh. java.util.prefs.Preferences.

+1

+1, Präferenzen API ist die beste Lösung –

0

Sonne selbst, mit seiner Java Control Panel, hatte das gleiche Problem (bug 6487334): ihre Bedienfeld auf verschiedenen Integrity Level ausgeführt wird, könnten beide nicht lesen/schreiben auf ihren Einsatz Verzeichnisse

Sie zogen es. c:\users\<username>\appdata\local, hatte aber nicht angewiesen auf System.getProperty("user.home") weil an diesem Tag, es einen Registrierungsschlüssel verwendet, die auf falschen Wert gesetzt werden kann, wenn Fenster „gezwickt“ ist: bug 6519127

So ist die Frage How to get local application data folder in Java?, HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\* Verwendung ist der richtige Ort, um Suche nach dem Lese-/Schreibzugriff für deine Einstellungen
Sie können es zum Beispiel mit SWT Win32 Extension Projekt lesen.

Das Interesse um Ihre Daten zu halten innerhalb der homedir des Benutzers ist, dass sie einen Teil des Benutzerprofils wird die bei der Anmeldung sein kann ein roaming profile, gespeichert bei der Abmeldung und restauriert (auf Corporations Workstations recht häufig verwendet)

Verwandte Themen