Wohin mit Programmeinstellungen?

Status
Nicht offen für weitere Antworten.

miketech

Bekanntes Mitglied
Hi zusammen,

ich schreibe gerade ein kleines Programm, in dem gewisse Einstellungen vorgenommen werden können (z.B. Datenbankverbindungen etc.).

Wo speichere ich die denn am besten ab? Nehme ich hierfür eine XML-Datei und parse die beim Starten? Oder gibts irgendwas einfaches/fertiges in Java für diesen Zweck?

Gruß

Mike
 
Schreib dir ne Klasse, die alle diese Informationen speichert und die java.io.Serializable implementiert. Diese Klasse kannst du dann in eine Datei serialisieren. Ob das als XML-Datei oder als unlesbarer Binärcode geschehen soll, kannst du ja selbst bestimmen (Stichwort XMLEncoder, ObjectOutputStream).
 
Hi,

danke für die schnelle Antwort.

Und was passiert dann, wenn sich im Laufe der Zeit diese Klasse ändert, weil noch etwas dazukommt? Das fliegt mir dann wahrscheinlich um die Ohren, wenn es binär ist oder?

Und wo speichere ich die Datei? Gibt es dafür irgendeine geeignete Stelle? Gibt es eine Klasse, die mir unter Windows z.B. C:\Dokumente und Einstellungen\.... und unter Linux /home/xy/.programmname/ zurückgibt?

Gruß

Mike
 
Das Benutzerverzeichnis bekommst du mit
Code:
String verzeichnis = System.getProperty("user.home");
Jo, wenn sich diese Klasse ändert, gibt's einen Fehler. Aber warum sollte Sie? Schreib' sie doch von Anfang an so, dass du in dieser Klasse (die ja nur zum Datenkapseln dient(!)) alle Daten unterbringen kannst.
 
Hi,

naja, aber das Programm soll ja noch wachsen, d.h. mit der Zeit kommen Einstellungen dazu. Dann sollen nicht belegte Felder erstmal mit Default-Werten belegt werden, bis der User die Einstellungen wieder ändert.

Geht das bei der XML Serialisierung vielleicht?

Gruß

Mike
 
Äh, warum nicht einfach eine Properties-Datei nehmen? Dann werden die Daten als String in einem Key-Value-Format gespeichert. Sieht dann so aus:
(Datei einstellungen.properties)
username = User
password = Pass
datenbank = MeineDaten

... etc. Einfach Stichwort Properties googeln. Mit dem Java Preferences Store kann man auch andere Werte speichern (z. B. int), dort werden die Daten in einem Objekt abgelegt.

Edit: Oh, schon gepostet, während ich schrieb. 🙂
 
Also ich verwende java.util.Properties für Einstellungen. Die Schlüssel habe ich in einem Enum und kann so relativ sauber an meine Einstellungen kommen. Bei komplexeren Einstellungsdaten würde ich dann XML nutzen.

Gruß nebulo

EDIT: Da war ich wohl etwas langsam 😉
 
Ist der einzige Unterschied zwischen Properties und Preferences der, dass erstere die Daten als Key-Value-Paar und letztere im XML-Format speichern?
 
nein.

key-value-paar schließt ja nicht xml aus. und java.util.Properties bietet sowohl funktionen zum speichern in textdateien("key=value") als auch für xml dateien.

Preferences ist unabhängig von der darunterliegenden datenhaltung. die default-implementierung verwendet xml-dateien, aber man kann auch einfach der jre sagen einen anderen preferencesstore zu verwenden, der dann die daten z.B. in eine datenbank speichert, oder in die registry von windows ... steht aber auch alles in der javadoc 😉
 
nur dass preferences einem auch die möglichkeit bietet per user oder per system die configuration zu speichern, ohne dass man sich kümmern muss wo im system es gespeichert wird
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben