Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo Java Forum,
hab ein Problem eine LinkedList in eine Datei zu speichern: wenn ich über
Code:
public void newEntry() throws IOException{ // Diese Methode fügt einen neuen Eintrag hinzu
LinkedList<Entry> myPhonebook = new LinkedList<Entry>();
myPhonebook = read(filename);
Entry neuerEintrag = new Entry();
neuerEintrag.setName();
neuerEintrag.setVorwahl();
neuerEintrag.setNummer();
myPhonebook.addLast(neuerEintrag);
writeToFile(filename, myPhonebook);
}
einen Eintrag zur liste hinzufüge und diese dann in das File speichern will werden nur die letzten Beiden Einträge in der Datei richtig gespeichert die vorhergehenden Einträge werden mit dem vorletzten Einrag überschrieben
Die Auslesemethode scheint die datei noch richtig auszulesen daher denke ich, dass das Problem beim schreiben liegt
Lesen:
Code:
public static LinkedList read(String filename) { // Diese Methode macht die Umwandlung von der Datei in eine Liste
LinkedList<Entry> ThePhonebook = new LinkedList<Entry>();
Entry enter = new Entry();
phonebook.In.open(filename);
String file=phonebook.In.readFile();
String[] fileseq=file.split(","); // Aufspaltung des files in die einzelnen Einträge
for(int i=0; i<=fileseq.length-1;i++) {
String[] addrSeq = new String[3]; //Aufspaltung der Einträge und Eintrag in die Liste
addrSeq=fileseq[i].split(":", 3);
enter.name=addrSeq[0];
enter.vorwahl=Integer.parseInt(addrSeq[1]);
enter.nummer=Integer.parseInt(addrSeq[2]);
ThePhonebook.addLast(enter);
}
phonebook.In.close();
return ThePhonebook;
}
> Die Auslesemethode scheint die datei noch richtig auszulesen daher denke ich, dass das Problem beim schreiben liegt
eine gewagte These, warum prüfst du sie nicht mit kinderleichten Mitteln nach?:
gib die Liste nach dem Lesen mit System.out.println() aus!
beim Lesen verwendest du nur ein Entry-Objekt,
welches du immer wieder mit den neuen Zeilen überschreibst,
so dass am Ende logischerweise die Infos der letzen Zeile drinstehen (das ist beim Schreiben dann die vorletzte)
->
erzeuge in der Schleife jeweils einen neuen Entry:
enter = new Entry();
beim Lesen verwendest du nur ein Entry-Objekt,
welches du immer wieder mit den neuen Zeilen überschreibst,
so dass am Ende logischerweise die Infos der letzen Zeile drinstehen (das ist beim Schreiben dann die vorletzte)
->
erzeuge in der Schleife jeweils einen neuen Entry:
enter = new Entry();
Ups das hatte ich übersehen - die einfache Änderung im Code hat geholfen thx für die schnelle Hilfe
PS: Da sieht man mal wieder, dass es manchmal besser ist wenn jemand anderes mal drüberschaut und nen eigentlich trivialen Fehler auf den 1. Blick sieht während man selbst immer wieder drüber hinweg liest
Da hast du natürlich recht. Nur manchmal ist man eben so auf das Problem fixiert, dass man einfach nicht darauf kommt diese "relativ einfachen Mittel" einzusetzen