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
 

JPKI

Top Contributor
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).
 

miketech

Bekanntes Mitglied
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
 

JPKI

Top Contributor
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.
 

miketech

Bekanntes Mitglied
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
 

Ellie

Aktives Mitglied
Ä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. :)
 

nebulo

Bekanntes Mitglied
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 ;)
 

Ellie

Aktives Mitglied
Ist der einzige Unterschied zwischen Properties und Preferences der, dass erstere die Daten als Key-Value-Paar und letztere im XML-Format speichern?
 

HoaX

Top Contributor
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 ;)
 

HoaX

Top Contributor
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.

Ähnliche Java Themen

Neue Themen


Oben