Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » ObjectOutputStream » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen ObjectOutputStream
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Tina92
unregistriert
ObjectOutputStream Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hallo,

ich möchte gerne ein kleines Tool schreiben, wo ein Eintrag mit Name und Geburstag (beides als String) angelegt werden kann.

Hier mein Code:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
package geburtstagstool;

import java.io.*;

public class GeburtstagsTool
{
    public static void main (String[]args) throws Exception
    {
        Eintrag eintrag = new Eintrag ("Miller","000000");
        Eintrag eintrag1 = new Eintrag ("Hansen","4444");
        eintrag.testSchreiben(eintrag);
        System.out.println(Eintrag.testLesen().name);
    }
}

class Eintrag implements Serializable
{
    Eintrag [] eintrag = new Eintrag [50];
    public String name;
    public String gebDatum;
    int i=0;
    
    public Eintrag (String name, String gebDatum)
    {
        this.name = name;
        this.gebDatum = gebDatum; 
    }         

    public void testSchreiben (Eintrag eintrag) throws Exception
    {
        ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream ("eintrag.dat"));
        oos.writeObject(eintrag);
        oos.close();
    }
    
    public static Eintrag testLesen() throws IOException, ClassNotFoundException
    {
        ObjectInputStream ois = new ObjectInputStream (new FileInputStream ("eintrag.dat"));
        Eintrag eint = (Eintrag) ois.readObject();
        ois.close();
        return eint; 
    }
}







Meine Ideen:
So wie mein Programm momentan geschrieben ist, bekomme ich nur den ersten Namen ausgegeben und weiß auch nicht wirklich, ob das alles so richtig funktioniert.

Habe auch ein Eintrag[] - Array angelegt, nur wie funktioniert das eigentlich mit dem ObjectInputStream wenn ich ihn wieder einlese?

Vielen Dank.
22.01.2016 00:40
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
Eintrag eintrag = new Eintrag ("Miller","000000");
Eintrag eintrag1 = new Eintrag ("Hansen","4444");

so weiß aber der eine Eintrag nichts vom anderen.
Entferne aus der Eintrag Klasse das Array. Dann hast du entweder in der main eines erstellen und das komplette Array serialisieren, oder du schreibst eine zweite Klasse, die das übernimmt.

__________________
Syntax Highlighting fürs Board (Link)
22.01.2016 07:07 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Tina92
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank für die Antwort, da hätte ich auch selber drauf kommen können :-)
22.01.2016 22:41
Tina92
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Habe es jetzt einmal umgeschrieben:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
package object_test1;

import java.io.*;


public class Object_Test1 
{
    public static void main (String[]args) throws Exception
    {
        Eintrag [] neuerEintrag = new Eintrag [2];
        neuerEintrag[0] = new Eintrag ("Miler"); 
        neuerEintrag[1] = new Eintrag ("Thomson");
        Ausgabe.schreiben(neuerEintrag);
        Eintrag[] eingabe = Ausgabe.lesen(neuerEintrag);
        for (int i=0; i<eingabe.length;i++)
        {
            System.out.println(eingabe[i].name);
        }
    }
}

class Eintrag implements Serializable
{
    protected String name;
    public Eintrag (String name)
    {
        this.name = name; 
    }
}

class Ausgabe extends Eintrag implements Serializable 
{
    protected String name; 
    
    public Ausgabe (String name)
    {
        super (name);
    }
    
    
    public static void schreiben (Eintrag [] eint) throws Exception
    {
        ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream("text.dat"));
        oos.writeObject(eint);
        oos.close();
    }

    public static Eintrag [] lesen (Eintrag [] eint) throws Exception 
    {
        ObjectInputStream ois = new ObjectInputStream (new FileInputStream ("text.dat"));
        Eintrag [] eintrag = (Eintrag []) ois.readObject();
        ois.close();
        return eintrag;
    }
}




Jetzt müsste ich nur noch die bereits geschriebenen Objekte beim Einlesen in eine ArrayList zwischenspeichern und dann bei der Methode schreiben die ArrayList übergeben und die neuen Einträge? Beim FileWriter gibt es ja append, sobald ich das auf true setzte, werden die neuen Elemente angehängt, aber das habe ich beim OOS leider nicht?


Vielen dank.
22.01.2016 23:36
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
public class Main {

	public static void main(String[] args) throws Exception
	{
		Ausgabe ausgabe = new Ausgabe();
		ausgabe.erstelleEintrag(new Eintrag("Miler"));
		ausgabe.erstelleEintrag(new Eintrag("Thomson"));
		ausgabe.schreiben();

		//hier eine neue Instanz erzeugen, die die Daten wieder einliest. Sonst zeigt das gar nichts
		Ausgabe ausgabe2 = new Ausgabe();
		ausgabe2.lesen();
		Eintrag[] eingabe = ausgabe2.getEintrag();
		for (int i = 0; i < eingabe.length; i++)
		{
			if (eingabe[i] != null)
				System.out.println(eingabe[i]);
		}
	}
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
class Eintrag implements Serializable
{
	private String name;

	public Eintrag(String name)
	{
		this.name = name;
	}

	@Override
	public String toString() {
		return name;
	}
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
public class Ausgabe implements Serializable {
	private Eintrag[] eintrag = new Eintrag[10]; //alternativ ArrayList

	public void schreiben() throws FileNotFoundException, IOException {
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("text.dat"));
		oos.writeObject(eintrag);
		oos.close();
	}

	public void lesen() throws FileNotFoundException, IOException, ClassNotFoundException {
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("text.dat"));
		eintrag = (Eintrag[]) ois.readObject();
		ois.close();
	}

	public void erstelleEintrag(Eintrag e) {
		for (int i = 0; i < eintrag.length; i++) {
			if (eintrag[i] == null) {
				eintrag[i] = e;
				break;
			}
		}
	}

	public Eintrag[] getEintrag() {
		return eintrag;
	}
}


__________________
Syntax Highlighting fürs Board (Link)
23.01.2016 06:52 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Tina92
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Herzlichen Dank :-)
23.01.2016 19:51
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » ObjectOutputStream