PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : java: object-array in datei speichern und wieder auslesen?



neonknight
25-03-2003, 15:02
wie kann ich in java einen object-array in eine datei speichern und von dort auch wieder auslesen?

meine überlegung war folgende (damit konnte ich vorher einen string abspeichern.):


public void saveToFile(Object[] cmdline){
try{
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File(System.getProperty("user.home")));
int result = chooser.showSaveDialog(this);
String filename = chooser.getSelectedFile().getPath();
File saveFile = new File(filename);
saveFile.createNewFile();
PrintWriter out = new PrintWriter(new FileWriter(saveFile));
out.write(cmdline);
out.flush();
out.close();
}
catch(Exception e){
JFrame frame = new JFrame();
JOptionPane.showMessageDialog(frame, "Error while saving to file!");
}
}

das führt leider zu einem kompilierfehler...

anda_skoa
25-03-2003, 15:38
ObjectOutputStream



Object[] array;

//...

FileOutputStream fileOut = new FileOutputStream(filename);
ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);
objectOut.writeObject(array);


Alle Element im Array müssen Serialisable implementieren.
(Java Standard Typenklassen machen das bereits)

Ciao,
_

neonknight
25-03-2003, 17:12
danke, schreiben klappt. nun habe ich noch ein problem mit dem einlesen.



FileInputStream fis=new FileInputStream(filename);
ObjectInputStream ois=new ObjectInputStream(fis);
???? = ois.readObject();
fis.close();


wie kriege ich das nun in einen Object-array?

SeeksTheMoon
25-03-2003, 17:23
vielleicht gehts auch einfacher, aber erstell mal eine Klasse, die dieses Array beherbergt, implementiere Serializable und schreib wenn Du alles in das Array in der Klasse eingelesen hast das Objekt in die Datei.

so:


public class foo implements Serializable {
Object [] array;
//bastel Dir nen Konstruktor

public void einlesen(Object obj) {
//obj in Array schreiben
}
}




// in der bisherigen App:
foo f = new foo();
f.einlesen(objekt)
//f an Filewriter übergeben


das sollte man problemlos ein und auslesen können

anda_skoa
25-03-2003, 18:40
Original geschrieben von neonknight
danke, schreiben klappt. nun habe ich noch ein problem mit dem einlesen.



FileInputStream fis=new FileInputStream(filename);
ObjectInputStream ois=new ObjectInputStream(fis);
???? = ois.readObject();
fis.close();


wie kriege ich das nun in einen Object-array?



Object[] array = (Object[]) ois.readObject();


Ciao,
_

neonknight
25-03-2003, 19:10
das war wohl etwas zu einfach, um von mir herausgefunden zu werden ;-) danke!