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?
 

Endymion

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

Gast2

Gast
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.
 
T

Tomate_Salat

Gast
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.
 
G

Gast2

Gast
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.
 

faetzminator

Gesperrter Benutzer
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. ...
 
T

Tomate_Salat

Gast
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 ;-)
 
G

Gast2

Gast
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.
 
T

Tomate_Salat

Gast
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 :)
 
G

Gast2

Gast
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 :D

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 ^^
 

Andi_CH

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

Guybrush Threepwood

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

thE_29

Top Contributor
@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..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
S Programm entwickeln, welches ein Dreieckspuzzle lösen kann Allgemeine Java-Themen 5
Z Welches GUI Framework für Java ist aktuell? Allgemeine Java-Themen 16
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
perlenfischer1984 Welches Design Pattern ist geegneit. Allgemeine Java-Themen 7
U Welches ist das richtige Entwurfsmuster Allgemeine Java-Themen 2
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
F Welches Design Pattern? Allgemeine Java-Themen 3
T WeakReference/PhantomReference: Mitbekommen WELCHES Objekt nun GC'ed wird Allgemeine Java-Themen 2
P "Komplexe" Datenbankabfragen, welches ist der bessere Weg Allgemeine Java-Themen 4
A Welches Speichermanagement für einen Kalkulator Allgemeine Java-Themen 7
T Welches Tuturial soll ich paralell lesen ? Allgemeine Java-Themen 3
R Welches User-Verzeichnis wählen für Configurationsdateien - Windows Allgemeine Java-Themen 2
G Gleiche Packages in verschiedenen JAR Dateien - Welches Package wird verwendet? Allgemeine Java-Themen 5
N Servlet welches PDF erzeugt Allgemeine Java-Themen 10
A Erkennen welches Fenster bei windowDeactivated aktiviert wird? Allgemeine Java-Themen 2
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
ARadauer Welches Programm hört auf Port? Allgemeine Java-Themen 3
P Textfiles laden - egal welches Encoding Allgemeine Java-Themen 9
N Welches design pattern? Allgemeine Java-Themen 8
André Uhres Welches Werzkeug benutzt ihr um eure Mails zu lesen? Allgemeine Java-Themen 47
A Welches Programmdesign? Allgemeine Java-Themen 6
D Welches Pattern kann ich nutzen? Allgemeine Java-Themen 9
F welches array ist im jedem programm? Allgemeine Java-Themen 6
Z Testen welches BS benutzt wird Allgemeine Java-Themen 3
T Welches Webframew0rk für pure Java? Allgemeine Java-Themen 13
M Welches Linux zum Java testen? Allgemeine Java-Themen 5
D Welches Fenster ist im moment aktiv? Allgemeine Java-Themen 11
K Welches Betriebssystem ist in Benutzung? Allgemeine Java-Themen 11
M Welches Objekt ruft die Methode auf? Allgemeine Java-Themen 12
S Welches Verschlüsselungsverfahren Allgemeine Java-Themen 9
G Welches Java GUI Buch würdet Ihr empfehlen Allgemeine Java-Themen 2
W VersionsVerwaltung welches Tool Verwendet ihr Allgemeine Java-Themen 12
D Welches Linux in Verb. mit Java Allgemeine Java-Themen 9
S Welches LookAndFeel ist das? Allgemeine Java-Themen 2
Chucky Java Buch - nur welches? online oder kaufbuch? Allgemeine Java-Themen 18
P Welches JRE braucht meine Applikation? Allgemeine Java-Themen 3
W welches layout? Allgemeine Java-Themen 3
I PNG - Dateiformat + Speicherung Allgemeine Java-Themen 9
Tobse Input/Output Dateiformat: Serialisierung VS Custom format Allgemeine Java-Themen 6
M Eigenem Dateiformat Icon zuweisen Allgemeine Java-Themen 6
G eigenes dateiformat als zip Allgemeine Java-Themen 2
B Dateiformat auslesen Allgemeine Java-Themen 8
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
kodela Eingabe für TextArray bedingt sperren Allgemeine Java-Themen 3
Karl_Der_Nette_Anfänger Hat wer ne Lösung für verknüpfte Postleitzahlen? (Baum/Wurzel Struktur) Allgemeine Java-Themen 11
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
G KeyListener für JTextField Allgemeine Java-Themen 5
webracer999 Library für Textsuche (z. B. include/exclude, and/or)? Allgemeine Java-Themen 5
I Module-Info für Jar erzeugen Allgemeine Java-Themen 7
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
B Simpler Eventlistener für Tastaturtaste bauen? Allgemeine Java-Themen 13
_user_q Eingegebenen Text Zeile für Zeile ausgeben lassen Allgemeine Java-Themen 11
E Key für TOTP Algorythmus(Google Authentificator) Allgemeine Java-Themen 0
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
M pfx-Zertifikat in Tomcat für SSL-Verschlüsselung nutzen Allgemeine Java-Themen 14
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
jhCDtGVjcZGcfzug Klassen Was genau passiert hier? Kann mir das jemand bitte Zeile für Zeile erklären? Allgemeine Java-Themen 1
rosima26 Bester Sortieralgorithmus für kurze Arrays Allgemeine Java-Themen 40
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
MangoTango Operatoren while-Schleife für Potenz Allgemeine Java-Themen 3
B Lottospiel, genug Reihen tippen für 3 Richtige (Spaß mit Arrays)? Allgemeine Java-Themen 46
B Mit welchen Datentypen und Strukturierung am Besten dutzende Baccaratspiele Shcritt für Schritt durchsimulieren? Allgemeine Java-Themen 26
D Klassendesign für einen Pascal Interpreter Allgemeine Java-Themen 6
I OCR Library für Belegerkennung Allgemeine Java-Themen 7
farah GetterMathod für Farbkanäle Allgemeine Java-Themen 6
B Welcher Datentyp für sehr große Zahlenbereiche? Allgemeine Java-Themen 1
S Webservices für binäre Daten? Allgemeine Java-Themen 5
G Licence-Header für InHouse entwickelten Source Allgemeine Java-Themen 8
M Schleife für einen TicTacToe Computer Allgemeine Java-Themen 5
O git ignore für Intellji braucht es die .idea Dateien? Allgemeine Java-Themen 8
F Java Script für das Vorhaben das richtige? Allgemeine Java-Themen 9
M wiviel Java muss ich für die Berufswelt können ? Allgemeine Java-Themen 5
Robertop Datumsformat für GB ab Java 16 Allgemeine Java-Themen 1
Thallius Verschiedene entities für gleichen Code…. Allgemeine Java-Themen 8
OnDemand Zentrale "Drehscheibe" für verschiedene APIs Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
D SHA-3 für Java-version 1.8 Allgemeine Java-Themen 1
N Validator für einen SQL-Befehl Allgemeine Java-Themen 22
Muatasem Hammud Erstellung von Testdaten für Arrays Allgemeine Java-Themen 6
B Logikfehlersuche, das perfekte Lottosystem für 3 Richtige mit Arraylists? Allgemeine Java-Themen 61
G Methoden für die Zukunft sinnvoll? Allgemeine Java-Themen 4
M API für PLZ Umkreissuche Allgemeine Java-Themen 3
1Spinne JDK 8 für Eclipse installieren Allgemeine Java-Themen 5
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
L Methoden Parser für gängige Datumsformate? Allgemeine Java-Themen 1
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
N relativier Pfad für sqlite-Datenbank in Gradle/IntelliJ Allgemeine Java-Themen 2
buchfrau Anagram für beliebiges Wort Allgemeine Java-Themen 2
TonioTec Api für Datenaustausch zwischen Client und Server Allgemeine Java-Themen 0
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
Kirby.exe Distanz Map für die Distanztransformation erstellen Allgemeine Java-Themen 1
F PI Regler für Heizung Allgemeine Java-Themen 7
8u3631984 Generelle Log4j.xml für alle Module Allgemeine Java-Themen 5
M Wie übergebe ich den Zähler für die Anzahl Rekursionsschritte korrekt? Allgemeine Java-Themen 2
B Login für User, der im Hintergrund Schedules ausführt Allgemeine Java-Themen 16
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
S Java-Task-Management-Tool für Windows und Mac selber programmieren Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben