Properties-Dateien

Mellisa

Grünschnabel
Hallo Zusammen,
ich habe gerade mit programmieren angefangen und schon das erste Problem:
Ich habe eine Mehrwerte Properties-Datei und habe diese Datei gelesen und in eine Liste reingeschrieben. Die Property-Datei sieht so aus:

L.name = firstname
L.code = firstcode
L.kurz = firstkurz

L.name = secondname
L.code = secondcode
L.kurz = secondkurz

und jetzt will ich diese Werte als parameter übergeben zu:
Book book = new Book(code,name,kurz);

Könnt Ihr mir dabei helfen?
 
Hi und herzlich willkommen bei tutorials.de,

habe diese Datei gelesen und in eine Liste reingeschrieben
der Inhalt der Datei liegt in einer Liste vor? Wie sieht den diese Liste aus, etwa:
Code:
list[0] = firstname
list[1] = firstcode
list[2] = firstkurz
list[3] = secondname
[...]
Dann ist die Parameterübergabe ganz einfach:
Java:
Book book1 = new Book(list[0], list[1], list[2]);
Book book2 = new Book(list[3], list[4], list[5]);

Ich hoffe, ich habe dich nicht falsch verstanden, ansonsten frage einfach nach.

Ciao
DosCoder
 
Zuletzt bearbeitet von einem Moderator:
Es gibt aber noch ein problem und zwar die werte werden durcheinander gespeichert, weil die eigentlich intern in einen Hashmap gespeichert werden.
D.h. :

L.name = firstname
L.code = firstcode
L.kurz = firstkurz

L.name = secondname
L.code = secondcode
L.kurz = secondkurz

list[0] = firstname
list[1] = firstkurz
list[2] = firstcode
list[3] = secondkurz
list[4] = secondcode
list[5] = secondname
[...]

kann man da etwas machen?
 
Du könntest die Datei zum Beispiel mit einer in-place Sortierung sortieren...dann hättest du immer die gleich Struktur :)

z.B. mit Collections.sortList(List);

Hoffe ich konnte helfen ^^
 
Wenn Du die Werte in einer Properties Datei stehen hast ist das ganze sogar noch einfacher.

Java:
Properties properties = new Properties();
FileInputStream stream = new FileInputStream("DEINE-DATEI.properties");
properties.load(stream);
stream.close();
String sprache = properties.getProperty("lang");

Book book = new Book(properties.getProperty("L.name"), properties.getProperty("L.code"), properties.getProperty("L.kurz"));

Allerdings bekommst Du dann wahrscheinlich ein Problem, wenn Du mehrfach den gleichen Bezeichner in der Datei hast (L.name usw.)
Properties Dateien sind in der Regel auch eher für Konfigurationsdateien gedacht.
 
Hi,
du kannst ein Hashmap-Objekt auch als Datei speichern, da es Serializable implenentiert:
Java:
//Map in Datei schreiben (=serialisieren):
HashMap<String, String> map = fillMap();
FileOutputStream foo = new FileOutputStream("/home/DosCoder/map.ser");//Dateinname, -pfad und -endung sind beliebig!
ObjectOutputStream oos = new ObjectOutputStream(foo);
oos.writeObject(map);
oos.close();

Java:
//Map aus der Datei holen (=deserialisieren):
FileInputStream fio = new FileInputStream("map.ser");//Dateiname ist beliebig!
ObjectInputStream ois = new ObjectInputStream(foo);
HashMap<String,String> map = (Hashmap)ois.readObject(map);
Du musst natürlich noch entsprechende try-catch-Anweisungen einbauen
Ich denke, das ist die einfachste Lösung,
Ciao
DosCoder
 
Zuletzt bearbeitet:
Allerdings bekommst Du dann wahrscheinlich ein Problem, wenn Du mehrfach den gleichen Bezeichner in der Datei hast (L.name usw.)
Properties Dateien sind in der Regel auch eher für Konfigurationsdateien gedacht.

Ich glaube, dass ist ja gerade die Intention von Melissa. xD

Ich würde eine billige XSD machen und sich daraus mittels JAXB Klassen generieren lassen und dort die Daten speichern (oder mittels JAXP eine XML einfach parsen).

Oder ich würde aus dem Stehgreif schauen was die Methode stringPropertyNames() von Properties genau macht. Und dann alle die mit einem bestimmten Muster anfangen, wie z.B. "booklist." dann entsprechend parsen.

Der Weg über eine XML ist natürlich eleganter, da hier durch die XML-Struktur so etwas leicht umsetzbar ist.

Ich hoffe ich konnte dir weiterhelfen
 
Hallo,

DosCoder: Ich kann nicht genau verstehen warum ich die Hashmap nochmal in eine Datei schreiben soll. Ich lese schon die Werte von einer Datei...... oder hast du was bestimmtes damit gemeint, dass ich nicht verstehe! :-(

LostBoi: Habe ich fast genau so macht. Das Problem kommt aber später vor: Wenn ich versuche die Werte zu lesen, die reihenfolge stimmt nicht.

Anime-Otaku: Deine Lösung klingt gut. In zukunf werde ich die verwenden!

Danke euch alle! Ich habe versucht, die Werte in der reihenfolge zu lesen, die ich die in .properties geschrieben habe. Keine schöne Lösung aber funktioniert. :-|
 

Neue Beiträge

Zurück