Persistente Speicherung

xx

Mitglied
Hallo Leute,

wir haben ein Problem, und zwar programmieren wir im Rahmen einer Uni-Veranstaltung "Wer wird Millionär?". Jetzt sind wir gerade dabei, eine Liste zu erstellen, wo alle Gewinner abgespeichert werden. Uns wurde gesagt, dass wir die Eingabe der Nicknamen persistent abspeichern müssen, damit sie beim erneuten Öffnen des Programms wieder auftauchen. Könnt ihr uns helfen? Wir wissen nicht, wie wir vorgehen sollen :(

Vielen Dank schon mal
 
Zuletzt bearbeitet von einem Moderator:
T

Tomate_Salat

Gast
Ich würde eine Datenbank (H2 Database) nehmen. Dort würde ich auch die Fragen+Antworten hinterlegen.
 

xx

Mitglied
die Fragen und Antworten funktionieren schon....

Was ist eine H2 Database? Sorry, wir sind leider ziemliche Anfänger :/
 

Final_Striker

Top Contributor
Wie geht man denn da vor? Bisher kann man seinen Namen in ein JTextfield schreiben...

Am besten ist wenn ihr zwei Buttons macht (Speichern, Laden), mit einem werden die Daten in die Datei geschrieben und beim zweiten aus der Datei gelesen.

Beispiele wie man in Dateien schriebt und wieder rausliest gib es min 1 Mil. bei Google.
 
B

bygones

Gast
bei dem anscheinigen wissenstand wuerde ich auch fuer serialisierung/datei schreiben-lesen tendieren.
 

xx

Mitglied
Das ist unsere Serialize Klasse:

Java:
package wird_wer_millionaer;

public class Abspeichern
{
	static void serialize(Vector spieler)
	{
		try
		{
			FileOutputStream file = new FileOutputStream("Millionaere.ser");
			ObjectOutputStream o = new ObjectOutputStream(file);
			o.writeObject(spieler);
			o.close();
		}
		catch( IOException e) 
		{
			System.err.println(e);
		}
		}
	
	static void deserialize(Vector spieler)
	{
		try
		{
		FileInputStream file = new FileInputStream("Millionaere.ser");
		ObjectInputStream input = new ObjectInputStream (file);
		spieler = (Vector) input.readObject();
		}
		catch (IOException e)
		{
			System.out.println(e);
		} 
		catch (ClassNotFoundException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


Wir haben einen Vektor erzeugt:
Java:
Vector spieler= new Vector ();

//in einer Methode dann:
Spieler mio= new Spieler(); //Spieler ist unsere Klasse mit Attributen Name und Verwendungszweck und sowie getter und setter

mio.setName(nickname.getText()); // nickname= JTextfield für Name
mio.setVervendungszweck(verwendung.getText()); // verwendung= JTextfield für verwendungszweck
spieler.add(mio);

Danach haben wir die Methoden serialize und deserialize aufgerufen.

Es erscheint eine io.notSerializableEsception.
Die abgespeicherten Daten des Vektor sollen auf einem Label erscheinen.
Könnt ihr uns helfen, wie wir das jetzt hinbekommen?
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
wie Java-Tags zu verwenden sind steht überall in roter Schrift, nicht das / vergessen

------

wo hast du den Code zum Speichern und Lesen her, welche Tutorials hast du gelesen,
irgendein Beispiel-Objekt einer eigenen Klasse (nicht nur String, Vector & Co) schon erfolgreich gespeichert?

deine zu speichernden Klasse müssen das Interface Serializable implementieren,
das ist mit das einzige was zu tun ist, schon schwer zu übersehen..
 
S

SlaterB

Gast
wenn weitere Klassen beteiligt sind, müssen die auch serialisiert werden,
üblicherweise steht in der vollständigen Fehlermeldung auch der exakte Klassenname..

wenn alles nichts hilft immer kompletten Code posten
 

freez

Top Contributor
bei dem anscheinigen wissenstand wuerde ich auch fuer serialisierung/datei schreiben-lesen tendieren.
Für den Lerneffekt würde ich auch den Vorschlag machen.

Ich persönlich würde die handvoll Millionäre in ein XML File via XStream packen (ungetestet):
Java:
XStream stream = new XStream();
ObjectOutputStream out = stream.createObjectOutputStream(new FileWriter("c:\\test.xml"));
out.writeObject(einMillionaer);
out.close();

Sollten es viele Millionäre werden, würde sich hier auch DB4o anbieten (auch ungetestet):
Java:
// accessDb4o
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "c:\\test.db4o");
try {
    db.store(einMillionaer);
} finally {
    db.close();
}
 

Ähnliche Java Themen

Neue Themen


Oben