Objekte in externer Datei schreiben

MaxK1990

Mitglied
Hey Leute, da bin ich nochmal mit ner neuen Frage.

Und zwar möchte ich gerne das gezeichnete auf der Leinwand in eine externe Datei speichern können, sodass ich das ganze zu einem späteren Zeitpunkt erneut aufrufen kann, oder an Freunde verschicken kann. Sie die Datei einlesen und das gleiche vor sich haben. Also sozusagen wie ein "Savegame" bei Spielen oder eine Word-Datei, die überall dann gleich aussieht.

Mit Datenbankanbindungen kenne ich mich eigentlich aus, sodass ich eine Datenbankanbindung auf MySQL oder Microsoft Access Datenbanken aufbauen, Sachen hinzufügen und auslesen kann.
Habe mir überlegt eine Microsoft Database zu verwenden, dann die Objekte in die Datenbank reinschreibe und sie per jdbc:eek:dbc Treiber wieder auslesen lasse. Aber es muss^doch eine andere Möglichkeit geben ein .sav oder ähnliches zu erstellen und nicht extra eine risieige Datenbank dranzuhängen.

Wie immer Danke im Voraus

Euer Max
 
Natürlich, schau dir mal die Klassen File, FileWriter, BufferedWriter, FileReader, BufferdReader etc an
 
Wenn ich dich richtig verstanden habe, willst du ein Bild von nen Programm abspeichern.
Prinzipiell kannst du mit Robot einen Screenshot machen.
Wenn du alle Elemente in ein Image zeichnest, kannst du auch per ImageIO ein Bild per File oder Stream schreiben.
Ansonst schau dir ObjectOutput/Input-Stream, Serializable und Persistente Objekte an.
 
Zuletzt bearbeitet:
Nene,
ich will mehrere Objekte in eine Datei schreiben.
Ich hab ein kleines Malprogramm und ich will die gezeichneten Objekte abspeichern inner Datei, dass ich später den Zustand rekonstruieren kann.
 
Da du nur von "Objekten" redest, würde ich dir einen ObjectOutputStream bzw. ObjectInputStream empfehlen. Jeweils zusammen mit FileWriter/FileReader.
Das setzt natürlich vorraus, dass du den gesamten Inhalt der Malfläche in einer geeigneten Datenstruktur gespeichert hast. Denn wenn das nicht so ist, hast du ja lediglich eine Bitmap, welche du dann speichern musst.
 
Also ich hab hier ne ArrayLIst mit verschiedenen Objekten gefüllt.
EInmal eben ein Rechteck, einmal ein Kreis (blabla), kann ich diese wie du meinst mit OBjextOutputWriter speichern?
 
Warum sagst du nicht einfach, das du eine Speicherfunktion brauchst?
Geh doch einfach alle Objekte durch, und speichere sie ab.
z. B.:

Code:
typ;parameter0;parameter1;parameter2
typ;parameter0;parameter1;parameter2

Code:
TYPE_RECTANGLE = 0;
TYPE_RECTANGLE = 1;
OVAL_RECTANGLE = 2;
---------------------------------
1;10;20;100;30
2;50;50;10;10
0;0;10;100;10
0;0;100;100;100

Und beim Laden wertest du den Typ aus, dementsprechend die Parameter und rekonstruierst die Objekte.
 
Also ich hab hier ne ArrayLIst mit verschiedenen Objekten gefüllt.
EInmal eben ein Rechteck, einmal ein Kreis (blabla), kann ich diese wie du meinst mit OBjextOutputWriter speichern?

Ja siehe http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html

An ObjectOutputStream writes primitive data types and graphs of Java objects to an OutputStream. The objects can be read (reconstituted) using an ObjectInputStream. Persistent storage of objects can be accomplished by using a file for the stream.

Warum sagst du nicht einfach, das du eine Speicherfunktion brauchst?
Geh doch einfach alle Objekte durch, und speichere sie ab.
z. B.:

Und beim Laden wertest du den Typ aus, dementsprechend die Parameter und rekonstruierst die Objekte.

Eben dafür ist der ObjectStream gedacht.

Edit: Siehe auch mein Beispiel in diesem Thread(Erst ein paar Tage alt).
http://www.tutorials.de/forum/java/362179-farben-und-strings.html
 
Zuletzt bearbeitet:
Hmm ich das ganze jetzt mal auf einen Button gelegt und folgendes auf die Taste gelegt (actionPerformed):

public void speichern(){
try{
FileOutputStream file = new FileOutputStream("C:/Users/Max/Desktop/test.erm");
ObjectOutputStream oos = new ObjectOutputStream(file);

oos.writeObject(formen);

oos.close();
}
catch(Exception ex){
JOptionPane.showMessageDialog(null, "Speichen fehlgeschlagen!");
System.out.println(ex);
}
}



Da bekomme ich aber folgende Fehlermeldung zurück:

java.io.NotSerializableException: paketFachklassen.Attribut


Was bedeutet NOtSerializableException?
 
Zurück