Ini-Klasse Datenverwaltung

TheWhiteShadow

Bekanntes Mitglied
Hallo zusammen,

Zunächst einmal, ich will nichts von Properties hören.

Ich habe eine Ini-Klasse geschrieben, welche zum Auslesen von Ini-Dateien auch wunderbar funktioniert.
Jetzt muss ich aber auch in die Dateien schreiben. Allerdings zerstört die bisherige Implementation das Format, da ich die Daten in einer HashMap abgelegt habe und somit keinerlei Strukturinformationen aufbeware.
Jetzt habe ich überlegt, die Daten in einer ArrayList zu speichern, die die Daten Zeilenorientiert speichert. (Bzw entspricht das eher einem kleinen Tree)
Somit lässt sich der Urzustand weitgehen wieder herstellen.
Diese Variante ist natürlich langsamer als über eine HashMap und das wirkt sich bei jedem Zugriff auf die Daten aus.
Somit habe ich mir gedacht, beide Varianten gleichzeitig zu speichern. Dabei hatte ich allerdings ein Synchronisationsproblem, und mich letztendlich dagegen entschieden.
zuletzt kam mir die Idee, die Datei beim Schreiben neu auszulesen und darüber, die Struktur mit den neuen Daten zu erweitern und wieder zu schreiben. Sollte bei einem lese- und einem Schreibvorgang innerhalb der Anwendung ok sein, denke ich.

Ich fass noch mal zusammen:
Hashmap
ArrayList
beides
Hashmap + Neuauslesen fürs Schreiben.

Was würdet ihr mir empfehlen, oder habt ihr ne bessere Lösung?
 
G

Gast2

Gast
Musst du das alles komplett selbst implementieren? Das gibts doch alles schon fertig :)
[ini4j] - Java API for handling Windows ini file format
Java Configuration API

Absolut zustimm! Verwende das framework auch. Großer Vorteil: Es implementiert auch das Preferences Interface. d.h. du musst deine Applikation nicht auf die API der INI Files auslegen und kannst somit den bakcingstore auch zu was anderem ändern.

oder mal anderst : was ist der grund warum du eben nicht das java-eigene format *properties* verwenden willst ?
Dafür kanns 100000000 Gründe geben, z.B. dass man mit properties ausschließlich Strings speichern kann (oder man für die Konvertierung selber sorgen muss), oder man in properties keine hierarchische Struktur hat, oder , oder, oder
 

faetzminator

Gesperrter Benutzer
Dafür kanns 100000000 Gründe geben, z.B. dass man mit properties ausschließlich Strings speichern kann (oder man für die Konvertierung selber sorgen muss), oder man in properties keine hierarchische Struktur hat, oder , oder, oder

Wieso, das kann ich doch mit wenig Aufwand nachbauen, indem ich einfach [c]foo.bar.baz[/c], [c]foo.bar.quoz[/c] etc. verwende und mir eine Hilfsmethode [c]readProperty(String... path)[/c] schreibe.
 
B

bygones

Gast
Wieso, das kann ich doch mit wenig Aufwand nachbauen, indem ich einfach [c]foo.bar.baz[/c], [c]foo.bar.quoz[/c] etc. verwende und mir eine Hilfsmethode [c]readProperty(String... path)[/c] schreibe.

properties sind nicht ausgelegt strukturierte Daten zu repraesentieren. Sie da reinzuzwingen ist unsinn. Und wie du sagst "nachbauen". Warum nachbauen, wenn man es anderswo ohne das zu bekommen hat....

wuerdest du eine komplexere XML struktur mit Bedacht als Properties repraesentieren ?

Ich bin momentan Fan von YAML - weil fuer meine Daten Properties nicht taugen und XML in Java mehr als besch*** ist
 

TheWhiteShadow

Bekanntes Mitglied
ini4j hab ich mal probiert, ist zwar ganz nett, schafft es aber auch nicht die Kommentare bei zu behalten, außerdem stören mich die Konvertierung von Umlauten, wodurch die Datei nicht mehr richtig lesbar wird. Kann man vielleicht einstellen, aber bevor ich mich stundenlang da rein arbeite schreib ich lieber was eigenes.

Ich brauch auch keine großartige Hirachie. Die Einteilung in Sectionen reicht völlig aus.
 

Empire Phoenix

Top Contributor
Warum nicht einfach die java interne xml krams nehmen? solange getter und Setter ordentlich geschreiben sind sollte das ja kein problem machen. Und damit kann man dann wirklich mit einem 1 zeiler laden und schreiben und zwar auch verschachtelte objecte und sonstwas.
 
G

Gast2

Gast
Warum nicht einfach die java interne xml krams nehmen? solange getter und Setter ordentlich geschreiben sind sollte das ja kein problem machen. Und damit kann man dann wirklich mit einem 1 zeiler laden und schreiben und zwar auch verschachtelte objecte und sonstwas.

Das wäre dann auch mein Alternativer Vorschlag.
 

faetzminator

Gesperrter Benutzer
wuerdest du eine komplexere XML struktur mit Bedacht als Properties repraesentieren ?
Nö, aber dafür würde ich auch kein INI nehmen ;) Für den normalen Anwendungsfall (von INI u/o properties) sehe ich schlichtwegs keinen Vorteil von INI gegenüber Properties.
Ansonsten natürlich XML.

Warum nicht einfach die java interne xml krams nehmen?

Ich würde JDOM empfehlen, eine bessere XML Lib kenne ich nicht. Sehr einfach zu verwenden.
 

parabool

Bekanntes Mitglied
da ich die Daten in einer HashMap abgelegt habe und somit keinerlei Strukturinformationen aufbeware.
Jetzt habe ich überlegt, die Daten in einer ArrayList zu speichern, die die Daten Zeilenorientiert speichert.

Bei einer LinkedHashMap bleibt die Reihenfolge der Einträge erhalten.
 
B

bygones

Gast
Nö, aber dafür würde ich auch kein INI nehmen ;) Für den normalen Anwendungsfall (von INI u/o properties) sehe ich schlichtwegs keinen Vorteil von INI gegenüber Properties.
Ansonsten natürlich XML.
Ich würde JDOM empfehlen, eine bessere XML Lib kenne ich nicht. Sehr einfach zu verwenden.
ebenso schrecklich in meinen augen... da lieber YAML mit snakeyaml oder aehnlichem... aber geschmackssache natuerlich
 

TheWhiteShadow

Bekanntes Mitglied
LinkedHashMap, klingt vom Namen her total dämlich.

Ich hab zwar ein XML-Parser (XStream), aber ich wollte damit nicht meine Configuration-Datei so sperrig machen.
Und Yaml muss jetzt nicht auch noch sein. Der Parser funktioniert ja schon super.

Habs noch mal mit Option 3 probiert und klappt auch ganz gut, wenn ich die Daten noch mal kapsel und die Zeilennummer mitspeichere.
 

delphiking1980

Bekanntes Mitglied
es dauert zwar bis man sich so richtig eingefuchst hat aber dann ist es ein selbstläufer und was gibt es besseres in der OOP als mit diesen Objekten zu arbeiten so hast du alles was du möchtest in einem Objekt gespeichert in einem format wie du es möchtest.
 

TheWhiteShadow

Bekanntes Mitglied
Wie schon gesagt, es ist ne Config-Datei.
Die Objekte, die ich speichern möchte sind nur Pfade und Namen, manchmal auch Zahlen. Und da sind Strings irgendwie ganz passend. ^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Methodenübersicht einer Klasse einsehen Allgemeine Java-Themen 14
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
A Zweite Service Klasse beim Kompilieren Allgemeine Java-Themen 6
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
H Kombination Interface und Abstrakte Klasse bei Generics Allgemeine Java-Themen 3
EinNickname9 Best Practice Singleton und Singleton mit Instanz zu anderer Klasse -Pattern Allgemeine Java-Themen 30
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
missy72 Klassen Eigene Klasse MessageWindow ähnlich der Alert Klasse Allgemeine Java-Themen 2
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
kanywayne Java programmieren: Polynom Klasse Allgemeine Java-Themen 4
L Die abzuleitende Klasse als Parameter übergeben Allgemeine Java-Themen 4
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
C Klasse mit Mockito simulieren Allgemeine Java-Themen 9
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
S static in Interface und Klasse Allgemeine Java-Themen 2
W Was genau sind IOTools? Kann ich stattdessen nicht die Scanner Klasse verwenden? Allgemeine Java-Themen 3
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
D javassist API Klasse in MethodCall ermitteln Allgemeine Java-Themen 8
kodela Klasse mit "gezipten" Daten Allgemeine Java-Themen 6
J Builder Klasse mit Lombok bauen Allgemeine Java-Themen 2
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
M [SOAP] - Klasse aus WSDL ausschließen Allgemeine Java-Themen 2
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
X Klassen Klasse BreakIterator Allgemeine Java-Themen 6
R Arraylist in andere Klasse leiten und bearbeiten Allgemeine Java-Themen 10
kodela Klassen Klasse "vergisst" ihre Daten Allgemeine Java-Themen 2
pkm Kann eine ServerSocket-Klasse nicht stateful sein? Allgemeine Java-Themen 4
E Socket Dynamische Klasse von ObjectOutputStream lesen. Allgemeine Java-Themen 8
M Matcher-Klasse findet match nicht Allgemeine Java-Themen 6
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
S Seltsames Ergebnis mit Date-Klasse Allgemeine Java-Themen 6
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
Neoline Klassen Singleton Klasse buchmanager Allgemeine Java-Themen 19
M Kapselung Modellierung von Intervallen: Klasse Interval Allgemeine Java-Themen 4
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
ReinerCoder Klasse kann nicht public deklariert werden Allgemeine Java-Themen 2
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
S Methoden Liste soll Methode aus innerer Klasse aufrufen Allgemeine Java-Themen 4
J IndexOutOfBoundsException bei der Nutzung der Klasse Message von mime4j Allgemeine Java-Themen 5
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
perlenfischer1984 Lombok Builder soll andere Klasse bauen Allgemeine Java-Themen 4
perlenfischer1984 Mit Lombok Builder Felder in Super Klasse füllen Allgemeine Java-Themen 12
T String aus While Schleife für ganze Klasse sichtbar machen Allgemeine Java-Themen 5
K Best Practice Auf die Klasse zugreifen im erzeugten ActionListener Allgemeine Java-Themen 2
K Mit Button neue Klasse öffnen Allgemeine Java-Themen 9
J Reflection mit Klasse und Subklasse Allgemeine Java-Themen 11
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
magdaStone Logikproblem Umschalten von booleans in anderer Klasse Allgemeine Java-Themen 7
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
A Java Klasse auf Tomcat während der Laufzeit austauschen Allgemeine Java-Themen 1
C Abstrakte Klasse, lokale Variable-Problem Allgemeine Java-Themen 1
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
Messoras Klassen Sämtliche Variablen einer Klasse übernehmen Allgemeine Java-Themen 6
H Methoden Methode 'updateItem' der Klasse 'TreeCell' Allgemeine Java-Themen 3
B Animierte Klasse schreiben - Wie? Allgemeine Java-Themen 9
M Klassen Eine Klasse in mehreren Klassen einbinden Allgemeine Java-Themen 11
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
L Eclipse JavaFX Klasse starten programmatisch Allgemeine Java-Themen 1
F Try/catch über ganze Klasse Allgemeine Java-Themen 9
L Von ArrayList abgeleitete Klasse nur mit bestimmten Objekten füllen Allgemeine Java-Themen 1
so_ein_Komischer Erste Schritte java Math Klasse finden? Allgemeine Java-Themen 2
J beans.instantiate(): Klasse kann nicht instanziiert werden Allgemeine Java-Themen 2
I Interface Interface / Klasse - wieso Abstract? Allgemeine Java-Themen 13
R Abstrakte Basisklasse und instanzierte Objekte der abgeleiteten Klasse als Basisklasse übergeben Allgemeine Java-Themen 2
F Methodenaufruf mit abgeleiteter Klasse als Arg... Allgemeine Java-Themen 10
M Klasse in separaten Thread ausführen.Wie genau? Allgemeine Java-Themen 2
A Best Practice Unterschied zwischen einer sauberen Dependency Injection und einer statischen Klasse Allgemeine Java-Themen 5
F Methoden in der Enumeration Klasse Allgemeine Java-Themen 1
S Die Initialisierung von Feldern in ableitender Klasse erzwingen..? Allgemeine Java-Themen 16
S Mit Generics Klasse erstellen die selbst T erweitert..? Allgemeine Java-Themen 4
M Variable außerhalb Klasse definierbar? Allgemeine Java-Themen 2
F Abstrakte Klasse in "For each" Schleife Allgemeine Java-Themen 1
F Enums als innere Klasse sinnvoll? Allgemeine Java-Themen 3
C Klassen Problem mit Funktion einer Generischen Klasse die ein Interface implementiert Allgemeine Java-Themen 0
K Problem: Java-Klasse mit mehreren Threads als eigenen Prozess starten Allgemeine Java-Themen 3
N Automatisches einfügen einer selbst generierten ID in Klasse mit Annotation Allgemeine Java-Themen 8
F Klassen Klasse bei Button klick öffnen Allgemeine Java-Themen 11
F OOP Datenbank-Klasse überall verfübar Allgemeine Java-Themen 2
E KeyCode in anderer Klasse speichern Allgemeine Java-Themen 2
B Klassen Eigene Klasse als Array benutzen Allgemeine Java-Themen 3
M File IO Klasse ... wie einbinden Allgemeine Java-Themen 6
M XML DOM Klasse die Iterable Implementiert Allgemeine Java-Themen 1
P Name der Parent Klasse abfragen Allgemeine Java-Themen 8
D Arraylist eigener Klasse an iReport übergeben Allgemeine Java-Themen 7

Ähnliche Java Themen


Oben