Problem mit LinkedList und Datei

Status
Nicht offen für weitere Antworten.

2dragons

Mitglied
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;
}
Schreiben:
Code:
public static void writeToFile(String filename, LinkedList<Entry> neu) {
	
	phonebook.Out.open(filename);
	
	for(int i=0; i<=neu.size()-1;i++) {
	phonebook.Out.print(neu.get(i).name+":0"+neu.get(i).vorwahl+":"+neu.get(i).nummer+",");
	}
	phonebook.Out.close();
}
 
> 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();
 
SlaterB hat gesagt.:
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 sieht man mal wieder, dass es manchmal besser ist wenn jemand anderes mal drüberschaut

naja, man könnte es auch für besser halten, wenn du dir mit einfachen Mittel selber helfen würdest :bae:
 
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
 
Nur manchmal ist man eben so auf das Problem fixiert, dass man einfach nicht darauf kommt diese "relativ einfachen Mittel" einzusetzen
Wenn man ein Loggingframework wie log4j einsetzt, kann man die meisten Probleme selber lösen und braucht eigentlich keinen Debugger mehr 😉
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben