Alternative zu .properties Dateien

  • Themenstarter Themenstarter Gast2
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast2

Gast
Hi,
in meiner Anwendung verwende ich zum Abspeichern von Einstellungen eine Properties Datei.
Das ganze funktioniert auch wunderbar... eine kleine Unschönheit ist allerdings, dass immer wenn ich Einstellungen abspeichere alles Kreuz und Quer weggespeichert wird, es lässt sich nie ne Reihenfolge festlegen und man darf immer fleißig nach werten suchen 😉
Gibt es da ne Alternative mit der ich ohne größeren Programmieraufwand Einstellungsdateien speichern kann?
Wichtig wäre mir wie gesagt dass man eine klare Struktur erkennen kann (also bitte auch kein XML oder ähnliches) und diese auch erhalten bleibt 😉

Gruß
 
du könntest auf Preferences ausweichen, da brauchst dich nicht mal kümern wo und wie du die speicherst, das übernimmt java für dich .. in windows bspw: landen die Einträge in der Registry .. referenziert wird das ganze dann per Klassen oder Package-ID .. bin mir da grad net so sicher.
 
aber bei properties haben wir doch auch key,value paare und können mittels getProperty() den wert auslesen? also wieso lange danach suchen? oder versteh ichs falsch ?!
 
aber bei properties haben wir doch auch key,value paare und können mittels getProperty() den wert auslesen? also wieso lange danach suchen? oder versteh ichs falsch ?!
Genau, aus Java heraus is das alles ganz easy, dafür gibts die Methoden.
Aber wenn ich jetzt aus Windows heraus (z.b. per notepad) an der Datei was ändern möchte sieht das alles ziemlich unübersichtlich aus. Außerdem ändert sich die reihenfolge der keys nach jedem speichern, d.h. man muss jedesmal ne endlose liste an keys durchschauen bis man den richtigen gefunden hat wo man dann das value ändern möchte.

du könntest auf Preferences ausweichen, da brauchst dich nicht mal kümern wo und wie du die speicherst, das übernimmt java für dich .. in windows bspw: landen die Einträge in der Registry
Ich denke das kommt für mich auch nicht in Frage, da hat der Anwender ja noch mehr Schwierigkeiten sich zurechtzufinden :bae:

So würde ich mir meine Settingsdatei vorstellen:
[GENERAL OPTIONS]
bla=blub
key15=value123

[DATABASE OPTIONS]
user=admin
password=pw
port=3306
db_name=foo

[NETWORK OPTIONS]
port=123
server_ip=127.0.0.1

[OTHER OPTIONS]
etc.
 
von Anwender-Änderungen war ja nich die Reden 😀

aber sone settingsdatei kannst dir ja locker selbst zusammenschreiben sind ja nur properties mit sections sozusagen.
 
du kannst doch dne properties einen kommentar hinzufügen:
Java:
FileOutputStream propOutFile = new FileOutputStream(filename);

			Properties p1 = new Properties();

			p1.setProperty("bla", "blub");
			p1.setProperty("key15", "value123");
			p1.store(propOutFile, "[GENERAL OPTIONS]");

			Properties p2 = new Properties();
			p2.setProperty("user", "admin");
			p2.setProperty("password", "pw");
			p2.store(propOutFile, "[DATABASE OPTIONS]");

in der datei stehts dann so:

Code:
#[GENERAL OPTIONS]
#Thu Sep 10 01:12:29 CEST 2009
bla=blub
key15=value123
#[DATABASE OPTIONS]
#Thu Sep 10 01:12:29 CEST 2009
user=admin
password=pw

/edit also nur noch das problem mit der reihenfolge..hmm 🙂
aber wieso sollte auch ein anwender in den dateien rumfummeln? 🙂
 
Zuletzt bearbeitet:
von Anwender-Änderungen war ja nich die Reden 😀

aber sone settingsdatei kannst dir ja locker selbst zusammenschreiben sind ja nur properties mit sections sozusagen.
Joa... hätte ich wohl besser erwähnen sollen 😉

Meinst du mit selbst zusammenschreiben, dass ich die Datei komplett selbst schreiben soll? Also per FileoutputStream und dann komplett per write("...") komplett händisch schreiben?
Da habe ich Bedenken dass das später mal zur Last werden könnte wenn ich da später 100+ key value paare habe.
 
Meinst du mit selbst zusammenschreiben, dass ich die Datei komplett selbst schreiben soll? Also per FileoutputStream und dann komplett per write("...") komplett händisch schreiben?
Da habe ich Bedenken dass das später mal zur Last werden könnte wenn ich da später 100+ key value paare habe.

naja so gesehen muss auch eine .properties im E-Fall mit 1000en Einträgen klar kommen .. auch sie schreibt per Stream vermute ich mal in Datein und muss um Paare und soweiter auszulesen die Datei mind. 1x durchwühlen. Bestenfalls macht sie dies am Anfang und speichert alles intern ab .. Genau das würde ich persönlich auch machen wenn es darum geht sone Art .ini - Notation durchzudrücken.

Was du bräuchtest wäre ja nur eine Klasse, welche sowas bereitstellt wie
Code:
createSection(String sec)
Code:
writeSection(String sec, String key, String value)
.. und sowas alles. Wäre nicht wirklich umständlich
 
aber wieso sollte auch ein anwender in den dateien rumfummeln?
In den Dateien befinden sich noch ne ganze Menge Einstellungsmöglichkeiten die über die GUI nicht einstellbar sind, wobei ich wohl (fast) der einzige sein werde der daran rumdoktort, aber mich störts halt iwie 😀

@diggaa1984
Ja ich denke das ist ne gute Idee, kann ich sicherlich auch nochmal in anderen Projekten verwenden dann 😉
Bin nur davon ausgegangen dass es sowas wohl schon gibt, wollte nicht das Rad neu erfinden 🙂
 
Was auch möglich wäre: Durch die properties iterieren, die File damit selbst schreiben, ABER das ganze alphabetisch sortieren. Dann würde man einen bekannten key schneller finden ... Auch wenn neue dazu kommen oder welche Wegfallen wäre die Reihenfolge mehr oder weniger definiert.

Wenns aber auf das Gruppieren ankommt find ich die Sections-Lösung auch schick. Wobei man da auch alphabetisch sortieren könnte.

- Alex
 
nur um mal etwas zu ändern, willst du dir das file selbst schreiben??? ich würd dann mit notepad lieber mit strg+f suchen
 
Anonsten würden mir für Configdateien nebst Porperties noch XML und/oder SQL (oder eine andere DB; die DB-Conn-Configuration muss natürlich wieder in eine Datei...) einfallen.
 
Hat denn XML keine klare Struktur? Ich würde so was machen:
Code:
<config>
    <general>
        <item key="foo" value="bar"/>
        <item key="lang" value="en"/>
    </general>
    <database>
        [...]
    </database>
</config>
 
vielleicht sucht er ne simple struktur, die auch DAUs verstehen 🙂 xml mag für machen schon zu hoch sein
 
Das kommt sich dann aber mit der Aussage in die Quere, er wäre (voraussichtlich) der einzige der die Datei bearbeitet.
Es kann allerdings vorkommen, dass hin und wieder auch der Anwender darin was ändern kann/muss. Daher kommt auch kein XML in Frage.

Wenn du einen Aufbau wie in einer .ini-Datei wünscht, ist das hier vielleicht was für dich:
[ini4j] - Java API for handling Windows ini file format
Danke dir Gastredner! Genau das habe ich gesucht 🙂
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben