TelefonBuch in Java

hallo,
ich bins wieder.

hab jetzt geschafft, das Telefonbuch abzuspeichern...
--> Liste wieder in einzelne Objekte zerpflücken,
diese abspeichern.
Code:
OutputStream fos = null; 
	  List ll=tb.getTelList();
	  try 
	  { 
	    fos = new FileOutputStream(fname); 
	    ObjectOutputStream o = new ObjectOutputStream( fos ); 
	    for (int x=0;x<(ll.size());x++){
	    	Eintrag ee = (Eintrag) ll.get(x);
	    	o.writeObject( ee ); 	
	    }
         }

nun, das funktioniert soweit, nur ist das Sinnvoll?
bzw. wie speichert man die komplette Liste?

nun möchte ich die Liste wieder auslesen
Code:
 try {
      ObjectInputStream in =
          new ObjectInputStream(
          new FileInputStream(fname));
      int xx;
      Eintrag e = (Eintrag) in.readObject();
      tb = new TelBuch1();
      tb.neuenEintragAnlegen(e);

dabei habe ich leider nichts gefunden,
eine Schleife oder ähnlich,
um das File auszulesen, bis alle Objekte gelesen und übertragen
 
Sofern die Liste Serializable ist kannst du diese auch einfach selbst mit dem ObjectOutputStream rausschreiben. ArrayList ist z.B. Serialisierbar.

Ansonsten schreibst du an den Anfang einen Integer mit der Anzahl von Elementen und liest diesen zuerst aus, dann kannst du solange entsprechend die Listenelemente wieder auslesen.
 
hi,

scheinbar funktioniert das Ausschreiben der serialisierten Liste nun.

aber das Einlesen...
Code:
InputStream fis = null; 
  try 
  { 
    fis = new FileInputStream(fname); 
    ObjectInputStream ois = new ObjectInputStream(fis);
    int cap = ois.read();
    System.out.println(cap);
  }
--> die Ausgabe von cap ist immer -1, was EOF bedeutet

wieso ist der Eingangstrom leer?
das File ist definitiv nicht leer

danke
 
danke,

nicht notwendig deinen Tip zu versuchen.

Problem war anderes:

Liste füllt sich aus Objekten einer Klasse Eintraege.

die Objekte dieser Klasse wiederum setzt sich aus Objekten der Klassen Person, Anschrift, TeleNummer zusammen.

Was hatte ich: in Klasse TelefonBuch einen Stream zum füllen und Auslesen der Liste.
Was fehlte: zwei StreamMethoden in Klasse Eintrage, die die "unterklassen" in einem Stream zusammen setzen.

diese Methoden fehlten
Code:
public void writeObject(ObjectOutputStream stream) throws IOException {
		stream.writeObject(diePerson);
		stream.writeObject(dieNummer);
		stream.writeObject(dieAnschrift);
	}

	private void readObject(ObjectInputStream stream) throws IOException,
			ClassNotFoundException {
		dieAnschrift = (Anschrift) stream.readObject();
		dieNummer = (TeleNummer) stream.readObject();
		diePerson = (Person) stream.readObject();
	}

Resumé: alles fertig (hoffe ich)
 
Zurück