Wo sollte man am besten System-unabhängig Benutzer-abhängige Daten ablegen?
-
SideWinder schrieb:
Nachtrag: Ins unabhängige Verzeichnis das du über user.home aus den Properties beziehst aber bitte nicht schreiben, das ist ekelhaft.
Wenn, dann sowieso in getProperty("user.home")+"."+appName+"-"+appMajorVersion - das gebietet schon allein die Logik. Oder meintest Du was anderes?
Gruß Jens
-
Ich wüsste keine andere Möglichkeit, lasse mich aber hier gerne eines besseren belehren.
Ja, ich meinte, dass es mir selbst unter home\app\ auf den Zeiger geht. Es gehört nunmal nicht dorthin!
MfG SideWinder
-
SideWinder schrieb:
Ich wüsste keine andere Möglichkeit, lasse mich aber hier gerne eines besseren belehren.
Ja, ich meinte, dass es mir selbst unter home\app\ auf den Zeiger geht. Es gehört nunmal nicht dorthin!
MfG SideWinder
macht gimp doch auch
-
SideWinder schrieb:
Ja, ich meinte, dass es mir selbst unter home\app\ auf den Zeiger geht. Es gehört nunmal nicht dorthin!
Wer spricht denn von /home/app? Da käme doch eigentlich /home/benutzer/.app bei raus. (bzw. es käme da raus, hätte ich nicht den directory-separator vergessen) Oder meintest Du %APPDATA? %APPDATA ist "Anwendungsdaten\appName" im Profil-Verzeichnis.
Und das ist doch nun wirklich beides etablierter Standard für Benutzer-abhängige Daten auf den jeweiligen OS. Oder wo wolltest Du damit hin?
Gruß Jens
-
ich meine auch das user home verzeichnis
-
Ich würde es auf jeden Fall ins UserHome schieben.
Leg doch nen Verzeichnis an. z.B. .AppName wie es auch eclipse macht.
-
Nachtrag
Bitte nicht verwechseln, User Home unter Win ist nicht das Verzeichniss "Eigene Dateien"
-
Unter Vista gibt es kein Verzeichnis "Eigene Dateien" mehr. UserHome = Eigene Dateien.
Anwendungen die dort Verzeichnisse erstellen: Visual Studio, ICQ und Adobe Updater
MfG SideWinder
-
Leute, Ihr verwechselt Persönliches- und Profil-Verzeichnis. user.home ist nicht das Persönliche Verzeichnis (aka Homeverzeichnis - *$%#& denglisch), sondern die Eigenschaft liefert in Java auf Windows den Wert von %USERPROFILE zurück. Das Homeverzeichnis ist das, was in
HKEY_CURRENT_USER\ Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ User Shell Folders\Personal
in der Registry hinterlegt ist. Da muss man in Java ein bißchen mehr Aufstand machen um ran zu kommen.
Würde es nur um Windows gehen, dann liegt in
HKEY_CURRENT_USER\ Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ User Shell Folders\AppData
(bzw. %APPDATA) der vorgegebene Pfad für solche Sachen.
Grade im Unternehmensbereich haben die beiden oft garnichts miteinander zu tun. Häufig wird da %APPDATA auf der lokalen Festplatte belassen, während das persönliche Verzeichnis auf irgendeine Netzwerk-freigabe verschoben wird.
Daran hat sich auch unter Vista nix geändert. Geändert hat sich nur, wie viel seiner eigenen Konfiguration Windows selbst in AppData ablegt.
Ich suche ja nur einen Weg, um die Fall-Unterscheidung nach Zielsystem zu unterlassen. IMHO kann es doch grade bei einem Abstraktionslayer wie der Java-VM nicht sein, daß man an solche Sachen nicht vernünftig ran kommt.
Gruß Jens
-
Irgendwie komme ich jetzt total durch einander.
Also was bitte liefert user.home unter diesem mehr als eigenartigen Bestriebsystem von MS (XP und Vista)?Config-Dateien gehoeren ins user-Verzeichnis und basta. Ich speichere immer unter
getProperty("user.home") + sep + "appname" + sep // sep ist "file.separator"
Btw:
Explorer\ User Shell Folders\Personal
was hat den der Explorer damit zu tun, welches mein home-verzeichnis ist? - ok ich versteh schon -Windows-
-
Weil der Explorer nicht nur ein Anwendungsprogramm (Dateibrowser) ist sondern eine weitaus wesentlichere Aufgabe unter Windows vollführt (schau mal was passiert wenn du alle Instanzen von explorer.exe im TaskManager beendest).
"getProperty("user.home") + sep + "appname" + sep" ist nicht das gewünschte Verzeichnis. Applikationen die auf diese Art und Weise ihre Anwendungsdaten in das Benutzerdatenverzeichnis schreiben kommen mir nicht auf die Festplatte.
MfG SideWinder
-
Noch schlimmer finde ich Anwendungen, die ihre Userdaten direkt in "Eigene Dateien\<name>" schreiben. Was soll das da? Ich will die nicht sehen.
-
das ist unix behavior da legst auch jeden benutzerspezifischen krempel einfach als versteckte datei oder verstecktes verzeichnis im home directory des benutzers an.
würd mir auch keine weiteren großen gedanken machen und einfach ne OS weiche einbauen. für windows nimmst das, was in %APPDATA% drinsteht (%APPDATA%/appname), für alle anderen user.home. und damit alle zufrieden sind, baust noch ne möglichkeit in dein programm, das verzeichnis manuell zu setzen
-
Ich muss das nochmal hoch holen. Mittlerweile hab ich mich für die OS-Weiche entschieden, hänge mich da aber ein bißchen an Windows auf.
Ich benötige hier den Inhalt der nicht existenten System-Variablen "%ALLUSERSAPPDATA". Oder anders ausgedrückt, ich muss an
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common AppData
ran.
Leider kann ich das auch nicht hardcoden, da auf den Systemen unterschiedliche Sprachen gefahren werden.
JNI und co scheiden leider aus betrieblichen Gründen aus.
Gibt's irgend einen Weg um das Problem herum zu programmieren?
Gruß Jens
-
jo, schreib in die doku, dass für den betrieb die systemvariable XYZ gesetzt werden muss zum beispiel %ProgramData%, die ist nämlich zumindest unter vista genau dafür definiert.
-
Sa(n)dman schrieb:
Oder anders ausgedrückt, ich muss an
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common AppData
ran.
Runtime.getRuntime().exec(new String[]{"regedit.exe", "/e", "temp.reg", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders"});
Dann die "temp.reg" parsen (OK, man nimmt natürlich File.createTempFile()). Verrückterweise bekomme ich die Strings als Hex-Array:"Common AppData"=hex(2):25,00,41,00,4c,00,4c,00,55,00,53,00,45,00,52,00,53,00,\ 50,00,52,00,4f,00,46,00,49,00,4c,00,45,00,25,00,5c,00,41,00,70,00,70,00,6c,\ 00,69,00,63,00,61,00,74,00,69,00,6f,00,6e,00,20,00,44,00,61,00,74,00,61,00,\ 00,00
Unter XP gibt es auch "reg.exe", damit geht das eventuell einfacher.
-
-
SideWinder schrieb:
http://java.sun.com/mailers/techtips/corejava/2007/tt0907.html#2
MfG SideWinder
und das hilft.... inwiefern?