Welches Dateiformat für gespeicherte Einstellungen?

Endymion

Bekanntes Mitglied
Hallo erstmal, ich hätte eine Frage: Bei manchen Programmen muss man ja einstellungen speichern, und das macht man ja logischerweise mit Dateiein. Meine Frage wäre, welche Dateitypen man da verwendet. in meinem AppData-Ordner (welcher meiens wissens für so etwas verwendet wird, korrigiert mich, wenn ich falsch liege) sind die meisten dateien XML-Dokumente. Diese sind aber meines wissens erstens relativ schwer auszulesen, und von einem Java-Programm auch sehr schwer zu schreiben. Gibt es nich andere Möglichkeiten? Oder gibt es irgend eine total simple Möglichkeit, mit Java XML-Dokumente zu schreiben und zu lesen?
 
Ok, danke, und was für ein "Kürzel" (ich weiß nicht, wie das heißt) hat diese Datei? ich Textdateien ist es ja .txt. Wie ist es bei einer Property-Datei?
 
Was Gasssst damit sagen möchte: die Dateiendung ist egal.
Es kommt nur drauf an was in der Datei steht. Du kannst auch ne Textdatei mit der Endung .png abspeichern und dann wieder in nem Editor öffnen.
 
wobei Properties-Dateien i.d.R die Endung .properties haben. Das hat den Vorteil, dass z.B. Eclipse diese Datei standardmäßig mit Syntaxhighlighting startet. Wobei man bei diesen Dateien wohl auch ohne Probleme darauf verzichten könnte. Aber letztendlich hat die Datei-Endung keine Auswirkungen auf die Datei selber. Es ist nur eine Hilfe für z.B. dein Betriebssystem, zu wissen, mit welchem Programm diese Datei geöffnet werden soll.
 
Die Preferences API läuft aber nicht nur auf Windows. ebenso auf Linux und Mac.

Dort gibts keine registry. Und wer auch unter Windows nen anderen Backing Store nutzen will kann folgenden nutzen: File Backing Store for Preferences API

Edit: Wollte den immer mal testen habs aber selber noch nicht getan.
 
Es ist nur eine Hilfe für z.B. dein Betriebssystem, zu wissen, mit welchem Programm diese Datei geöffnet werden soll.

*räusper* es ist nur eine Hilfe für Windoof, alle anderen haben gemerkt, dass die Dateiendung s******egal ist :bae:

Es gibt da viele Ansätze, wie man es machen könnte
1. Serialisierung eines Settingobjekts
Vorteil: Es können ganze Objekte ohne viel eigenen Code gespeichert werden
Nachteil: Diese Objekte dürfen sich nicht ändern (also du kannst sie nicht nachträglich erweitern), da sie dann nicht mehr ladbar sind. Auch nicht zur Konvertierung in das "neue Format"
2. Preferences
Vorteil: Ist wieder was existierends, was wenig Code benötigt
Nachteil: man hat keinen einfachen, externen Zugriff auf die Daten, da nicht vorgegeben ist, wie was wo gespeichert wird. Es können nur Strings gespeichert werden.
3. Properties
Vorteil: Ist wieder was existierends, was wenig Code benötigt
Nachteil: Ist nicht für komplexe Strukturen geeignet und kann nur Strings aufnehmen.
4. XML
Vorteil: Du kannst alles in einer von Menschen lesbarer Form komplex aufbauen - so komplex du willst.
Nachteil: Du musst dir eine für dich passende Lib für XML suchen. Java hat standardmässig 2 Parser im Angebot, finde die aber nicht gerade toll. Ich würde JDOM empfehlen. Auch hier muss alles auf Basis von Strings funktionieren.
5. Dein eigenes Dateiformat
Viel Spass :bae:
6. ...
 
Die Preferences API läuft aber nicht nur auf Windows. ebenso auf Linux und Mac.
Ich weiß. Trotzdem fördert das ganze Datenmüll. Ohne richtigen Deinstaller ist das imho eine hässliche Lösung.

Und wer auch unter Windows nen anderen Backing Store nutzen will kann folgenden nutzen: File Backing Store for Preferences API
schaut wirklich interessant aus, aber bei dem Workaround nehme ich lieber Properties,xml oder H2 ;-)


*räusper* es ist nur eine Hilfe für Windoof, alle anderen haben gemerkt, dass die Dateiendung s******egal ist :bae:
*räusper* da stand ein z.B. was ausgeschrieben "zum Beispiel" bedeutet und dem Lesenden Subjekt vermitteln soll, dass es sich hier um ein Beispiel handelt. :bae:

Edit:
sondern einer sehr begrenzten Anzahl an booleans, ints und floats.
Kleinvieh macht auch mist ;-)
 
Ich weiß. Trotzdem fördert das ganze Datenmüll. Ohne richtigen Deinstaller ist das imho eine hässliche Lösung.

Ist das nicht selbstverständlich einen anständigen Deinstaller (zumindest bei Windoof) zur Verfügung zu stellen?

Im übrigen werden auch im appdata die Einstellungen meist nicht gelöscht. Egal obs in der Registry oder sonst wo gespeichert wird.
 
Ist das nicht selbstverständlich einen anständigen Deinstaller (zumindest bei Windoof) zur Verfügung zu stellen?
Bei Windows sieht man es häufig, ja. Bei Mac zum Beispiel habe ich noch nie einen Benutzt/gesehen. Wobei hier auch die Installation meistens eine Copy&Paste-Variante war. Mit Linux habe ich schon zu lange nichts mehr gemacht.

Im übrigen werden auch im appdata die Einstellungen meist nicht gelöscht. Egal obs in der Registry oder sonst wo gespeichert wird.
Wenn die in einem entsprechenden Unterordner sind, hat man wenigstens noch die Chance, drauf zu kommen, dass man diese Dateien nicht mehr braucht. Bei Daten in der Registry oder ähnlichem hast du verloren ... Ist meine Meinung. Wie gesagt, wenn man einen [strike]De[/strike]Uninstaller mitlieferst, der wieder aufräumt, dann habe ich nichts mehr zu meckern 🙂
 
Wie gesagt, wenn man einen DeUninstaller mitlieferst, der wieder aufräumt, dann habe ich nichts mehr zu meckern

Unter WIndows immer, da die ganzen Anwender im Office sonst doch gar nichts "installieren" können 😀

PS: Ich nutze InnoSetupComiler. Damit gehts extrem einfach. Und damit niemand seine *.exe vermisst gibts noch nen Wrapper mittels Launcher4j

Mac machen wir in der Regel nicht und Linux Nutzer können einfach die Anwendung kopieren ohne damit überfordert zu sein ^^
 
Die Preferences API läuft aber nicht nur auf Windows. ebenso auf Linux und Mac.

Aber sind die gespeicherten Daten auch auf den anderen Plattformen brauchbar?

IMHO ist es wichtig, dass nicht nur das Programm sondern auch die gespeicherte Properties, Settings oder was auch immer für Daten portabel sind. Ein human readable format ziehe ich jedem Binärformat, auch noch aus anderen Gründen, vor.
 
Aber sind die gespeicherten Daten auch auf den anderen Plattformen brauchbar?

IMHO ist es wichtig, dass nicht nur das Programm sondern auch die gespeicherte Properties, Settings oder was auch immer für Daten portabel sind. Ein human readable format ziehe ich jedem Binärformat, auch noch aus anderen Gründen, vor.

Hängt das nicht vom Anwendungsszenario ab? Bei "Preferences" gibt man beim Abruf stets einen default-Wert mit, für den Fall, dass der Schlüssel noch nicht in der Registry steht. Das ist ja dann letztlich die Grundeinstellung, auf die Du ansprichst. Ich verwende seit Jahren in meinen Programmen (kommerziell; Windows, Linux Mac, jeweils mit angepassten Versionen je nach Betriebssystem) für diese Zwecke Preferences und hatte noch nie Probleme. Es ist meiner Ansicht nach die eleganteste Möglichkeit, nachdem ich zuvor immer mit Properties gewurschtelt hatte. Bei Properties besteht ja das gleiche Problem, dass man diese in Nutzerverzeichnissen speichern muss und normalerweise nicht auf das programmverzeichnis schreibend zugreifen darf. Es wäre dadurch nichts gewonnen. Darüber hinaus kann man überall im Programm sehr leicht auf die Registry zugreifen und muss nicht mit Dateien jonglieren.
 
@faetzminator:
1. Serialisierung eines Settingobjekts
Nachteil: Diese Objekte dürfen sich nicht ändern (also du kannst sie nicht nachträglich erweitern), da sie dann nicht mehr ladbar sind. Auch nicht zur Konvertierung in das "neue Format"

Also wenn sich die serialVersionUID NIEMALS ändert, dann kann man bestehende Klassen auch erweitern...

Die neuen Klassen-variablen sind dann halt defaultmäßig geleert..
 

Neue Themen


Zurück
Oben