Wo speichert man am besten Daten? Appdata?

H

Hasrunda

Gast
Angenommen meine Java-Applikation muss irgendwelche Daten zum progress speichern (zB bei einem Spiel welche level man freigeschaltet hat).

Unter Windows speichern die meisten Programme sowas ja in "C:\Users\<User>\AppData\Roaming\"


Gibt es diesen Pfad in irgendeiner Java-Variable, damit das ganze in Linux etc. äquivalent funktioniert?
 
G

Gast2

Gast
Es gibt ne Property die
Code:
user.home
heißt. Unter Windows zeigt die auf
Code:
C:/Users/username
, unter Linux auf
Code:
/home/username
, unter Mac zeigt die sicherlich auch irgendwo hin ;)
Ich speichere Daten dann meist in:
Code:
System.getProperty("user.home") + ".meineApplikation/"
 

Guybrush Threepwood

Top Contributor
Es gibt ne Property die
Code:
user.home
heißt. Unter Windows zeigt die auf
Code:
C:/Users/username
, unter Linux auf
Code:
/home/username
, unter Mac zeigt die sicherlich auch irgendwo hin ;)
Ich speichere Daten dann meist in:
Code:
System.getProperty("user.home") + ".meineApplikation/"

Unter Windows nimmt man üblicherweise das folgende, da user.home sehr hässlich die Eigenen Dateien vollstopft:
Java:
String USER_DIR = System.getenv("APPDATA") + File.separator
			+ "programmname";

Es gibt aber noch weitere potentielle Variablen, z. B. wenn man Adminrechte hat.

Unter Mac nimmt man wie Linux user.home. Am besten fragst Du das Betriebssystem ab und setzt den Pfad entsprechend (bei Windows APPDATA, ansonsten user.home).
 
G

Gast2

Gast
Unter Windows nimmt man üblicherweise das folgende, da user.home sehr hässlich die Eigenen Dateien vollstopft:
Java:
String USER_DIR = System.getenv("APPDATA") + File.separator
			+ "programmname";

Es gibt aber noch weitere potentielle Variablen, z. B. wenn man Adminrechte hat.

Unter Mac nimmt man wie Linux user.home. Am besten fragst Du das Betriebssystem ab und setzt den Pfad entsprechend (bei Windows APPDATA, ansonsten user.home).

So stimmts ja mal nicht, denn user.home zeigt auf Dokumente und Einstellunge\username
Dadrin steckt zwar auch Eigene Dateien, jedoch liegt dann das .PROGRAMMNAME Verzeichnisparallel zum Eigene Dateien. APPDATA liegt im gleichen Verzeichnis. Ich sehe daher nicht wo der Vorteil sein soll. Man hat allerdings den Nachteil, dass man das System abfragen soll.

[EDIT]OK liest sich vielleicht etwas schlecht: Zusammengefasst: Appdata liegt im user.home![/EDIT]

Wozu also?

@TO Nimm einfach user.home. Das ist Standard und vollkommen in Ordnung. Funktioniert nebenbei auch auf allen Systemen
 

Guybrush Threepwood

Top Contributor
user.home schaut auf Windows ******* aus. Es ist völlig unüblich, dort direkt in einem Unterordner Programmdaten abzulegen. Man erkennt daran praktisch immer die Java-Programme, die sich nicht um Style-Guides kümmern. Ich habe dort neben den üblichen Einträgen 8 Ordner mit Programmdaten liegen - allesamt ausschließlich von Java-Programmen. Wenn Du schon Dein Programm speziell auf Windows ausrichtest, dann solltest Du so viel Konfiguration in Kauf nehmen.

Jedes Programm, das sich auf Windows halbwegs an die üblichen Vorgehensweise hält speichert unter APPDATA. Klar liegt das auch unter user.home, aber es ist normalerweise nicht für den Nutzer sichtbar.

Und hier bereits der fertige Code zur Abfrage:
Java:
	public String getUserDir(String programmname) {
			String userdir = "";
			if (System.getProperty("os.name").toLowerCase().indexOf("win") > -1)
				userdir = System.getenv("APPDATA") + File.separator
						+ programmname;
else
userdir  = System.getProperty("user.home") + File.separator
					+ programmname;

		}
		return userdir;
	}
 
Zuletzt bearbeitet:

irgendjemand

Top Contributor
bleib mal ruhig brauner ...

das stimmt zwar so weit bis XP MCE ... aber seit vista wurde genau das geändert ...

unter XP war "C:\Dokumente und Einstellungen\<username>" noch der über-ordner von "Eigene Dateien"

seit Vista wurde da aber einiges dran geändert ...

1) es heißt grundsätzlich "C:\Users\<username>" ... das i18n was der explorer anzeigt ist irrelevant ... einfach mal CMD.exe verwenden ... die zeigt die "echten" pfad an
2) "C:\Users\<username>" IST jetzt "Eigene Dateien" ... es heißt nur nicht mehr so ... das was du bestimmt meinst wäre das äquivalent "Dokuemente" was sich dann unter "C:\Users\<username>\Documents" findet

@topic

persönlich würde ich auch unter windows "user.home/.programmname" verwenden ... weil man ansonsten nicht nur zwischen Win und Nicht-Win unterscheiden müsste sondern auch zwischen 9x , 2k , XP , Vista/7 ...
 

irgendjemand

Top Contributor
Sorry, das ist nicht korrekt: APPDATA gibt auf Win seit 9x den jeweils spezifisch dafür vorgesehenen Ablageort für Programmdaten aus.

hmm .. da hast du mich jetzt missverstanden ... denn ich habe mich nicht mal auf "appdata" bezogen ... da dies immer noch eine unterscheidung zwischen den OSs wäre ... welche man mit "user.home/.programmname" grundsätzlich vermeidet*
 
M

maki

Gast
user.home schaut auf Windows ******* aus. Es ist völlig unüblich, dort direkt in einem Unterordner Programmdaten abzulegen. Man erkennt daran praktisch immer die Java-Programme, die sich nicht um Style-Guides kümmern.
So unüblich ist das IMHO gar nicht.
Natürlich findet man da u.a. Java SW (Netbeans, Eclipse, Maven, Groovy), aber nicht nur (VirtualBox, etc. pp.), finde ich persönlich gar nicht schlimm.
IME macht das meistens nur "Windows Only" SW anders.
 

U2nt

Bekanntes Mitglied
Also ich kann auch nur sagen das es mich auf Windows gewaltig nervt, wenn Programme ihre Daten in
Code:
user.home\.programmname
speichern.
Ich benutze viel lieber AppData.
 

irgendjemand

Top Contributor
kann auch sein das ich einfach verwöhnt bin weil ich kilometer was an platten im rechner hab *4 platten > 4 laufwerke + 2 sticks > 2 laufwerke*

von daher ist es mir meist völlig egal was unter C: abgeht da da eh nur mein win drauf läuft *und so das eine oder andere programm was sich partu nicht auf n anderes laufwerk installieren lassen will*

desswegen ist es mir auch völlig egal was unter user.home abgeht ... da dort halt nichts liegt was mich irgendwie interessieren könnte ... meine files liegen auf anderen platten ... und weil user.home nun mal unter allen system halbwegs den gleichen pfad hat *unter win halt C:\Users\ und unter unix /home/* und man auch sicher sein kann das ein programm innerhalb dieses ordners und damit aller sub-ordner definitiv schreibrechte hat ... warum nicht dierekt nehmen ?

natürlich ist appdata nur ein sub-folder von user.home unter win ... aber falls man doch mal ran muss tun sich die meisten 0-8-15 user schon etwas schwer ...

und ob man nun den führenden punkt grundsätzlich verwendet *und damit unter unix einen "unsichbaren" ordner erzeugt und unter win es einfach nur merkwürdig aussieht* ... oder diesen weglässt ... liegt meiner ansicht nach an dem was man erreichen will ...

wenn man für den user unsichtbar und unveränderlich seine daten speichern will ... dann könnte man unter win gleich die registry nehmen ... davon haben nun noch weniger leute ahnung ...


ich denke über das thema kann man sich echt gegenseitig totschlagen ... weil es immer mehrere lager geben wird ... alleine schon die OS lager ... und dann innerhalb derer noch die verfechter bestimmter speicher-orte ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G wo speichert man am besten eine Datei? Java Basics - Anfänger-Themen 4
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
M Objekt einer Klasse speichert die Veränderung nicht Java Basics - Anfänger-Themen 1
cpt.Tomato Best Practice Wie speichert/Dokumentiert Ihr eure Programme? Java Basics - Anfänger-Themen 8
D Erste Schritte Java speichert wert des Scanners nicht Java Basics - Anfänger-Themen 2
V Warum speichert meine String-Variable nummerische Werte? Java Basics - Anfänger-Themen 3
GreenTeaYT Variable speichert nicht die korrekte Zahl ein Java Basics - Anfänger-Themen 12
M Erste Schritte Wie speichert und gibt man Arrays aus? (JLabel) Java Basics - Anfänger-Themen 12
N Klassen Class nur einmal ausführen und sie speichert daten für alle anderen classes? Java Basics - Anfänger-Themen 3
A Jar speichert änderung nicht Java Basics - Anfänger-Themen 14
R Kalender speichert keine Zeit Java Basics - Anfänger-Themen 2
M OOP ArrayList speichert nicht richtig Java Basics - Anfänger-Themen 3
7 Array speichert Werte nicht? NullPointerException Java Basics - Anfänger-Themen 2
D Klasse speichert Daten nicht wie sie soll Java Basics - Anfänger-Themen 4
E DB4O speichert mein JLayeredPane nicht ab! Java Basics - Anfänger-Themen 13
NightmareVirus java speichert daten net Java Basics - Anfänger-Themen 3
M arraylist die hashmaps speichert? Java Basics - Anfänger-Themen 2
R Speichert eine ArayList Strings oder Integer Java Basics - Anfänger-Themen 4
D Datentypen Wie am Besten abspeichern Java Basics - Anfänger-Themen 1
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
Salvatore321 Wie kann ich dieses Zustandsdiagramm am besten Umsetzen? Java Basics - Anfänger-Themen 5
dieter000 Hilfe bei dem Beispiel, wie gehe ich sowas am besten an? Java Basics - Anfänger-Themen 32
M konzeptuelle Frage: In welcher Klasse definiert man am Besten Methoden, die die Kommunikation mit dem User regeln? Java Basics - Anfänger-Themen 8
I Wo am besten eine String Konstante initialisieren? Java Basics - Anfänger-Themen 5
A Wie sollte ich es am besten an gehen - denkweise Java Basics - Anfänger-Themen 48
E Erste Schritte Java Webeintwicklung (JSP/Servlet), wie am Besten einsteigen? Java Basics - Anfänger-Themen 0
V welche Methode am besten sich für JPG einfügung in Java anzugewöhnen ? Java Basics - Anfänger-Themen 4
I Grafische Benutzeroberflächen - welche Komponente nehme ich am besten? Java Basics - Anfänger-Themen 13
DStrohma Best Practice Wie setze ich Suchparameter am besten? Java Basics - Anfänger-Themen 3
J Wie handle ich Threads am besten? Java Basics - Anfänger-Themen 2
B Datentypen Wie Daten am besten organisieren? Java Basics - Anfänger-Themen 7
M wie kann ich am besten die kleinste 2 elemente von einer Liste kriegen Java Basics - Anfänger-Themen 4
S Wie kann man am besten programmieren erlernen? Java Basics - Anfänger-Themen 32
P OOP Wie schreib ich dieses Programm am besten? Java Basics - Anfänger-Themen 6
B Wie lerne ich am besten? Java Basics - Anfänger-Themen 7
C Wie am besten die Verarbeitung der Eingabe verzögern ? Java Basics - Anfänger-Themen 5
C Wie Objekte am besten anklickbar machen ? Java Basics - Anfänger-Themen 9
H Wie lerne ich am Besten Java Java Basics - Anfänger-Themen 28
K OPP am besten verstehen !!! Java Basics - Anfänger-Themen 7
S Wie ereuge ich hier am besten eine Schleife Java Basics - Anfänger-Themen 12
D Logging sätmlicher Vorgänge, wie am besten realisieren? Java Basics - Anfänger-Themen 6
A wie lernt man am besten den code zu verstehen? Java Basics - Anfänger-Themen 7
A Welches GUI nutze ich am Besten? Java Basics - Anfänger-Themen 7
B mit was am besten speichern und abrufen?+ fenster in fenster Java Basics - Anfänger-Themen 4
G Massenersetzungen am besten auch mit replaceAll? Java Basics - Anfänger-Themen 3
F Anfänger - die besten Tipps Java Basics - Anfänger-Themen 3
G Wann am besten getSize() aufrufen? Java Basics - Anfänger-Themen 6
S Wie am besten JAVA lernen Java Basics - Anfänger-Themen 12
D Fehlerbehandlungen, wie am besten sinnvoll einsetzen? Java Basics - Anfänger-Themen 6
S schwieriger String für StringTokenizer, wie am Besten ? Java Basics - Anfänger-Themen 8
frau-u guter Stil - wie macht mans am Besten? Java Basics - Anfänger-Themen 8
A Wie fange ich am besten mit nem Programm an? Java Basics - Anfänger-Themen 10
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Daten in Echtzeit übernehmen Java Basics - Anfänger-Themen 5
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
M Tabellen- Daten laden Java Basics - Anfänger-Themen 2
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D Sportwetten Daten Atomatisch analysieren um optimale Strategie zu erhalten Java Basics - Anfänger-Themen 6
S Java Daten in Excel speichern Java Basics - Anfänger-Themen 1
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
S Binäre-Suche bei unsortierten Daten Java Basics - Anfänger-Themen 7
N Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams Java Basics - Anfänger-Themen 9
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
A Minesweeper - Daten Java Basics - Anfänger-Themen 46
A Eingelesene Daten in Array(Liste) abspeichern? Java Basics - Anfänger-Themen 18
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
M Wie erzeuge ich die Differenz von zwei Daten in Stunden?? Java Basics - Anfänger-Themen 2
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
H Passwortmanager, Sicherheit der Daten Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben