Ich arbeite derzeit an einem Projekt und möchte ein Objekt in einer Datei mit ObjectOutputStream
zu einem Speicherort speichern, den der Benutzer mit Hilfe von JFileChooser
auswählt. Das Objekt wird jedoch immer im Stammverzeichnis des Programms in der Datei "null" (%ProjectDirectory%/null
) gespeichert.filePath von JFileChooser ist null
Hier ist meine Methode saveObjects
, die eine LinkedList
von Objekten in einer Datei speichert:
public void saveObjects(String filePath) {
try {
FileOutputStream os = new FileOutputStream(filePath);
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(oceanObjects);
oos.close();
os.close();
} catch(IOException e) {
System.err.println(e);
}
}
Diese Anweisung ruft die Methode saveObject
mit dem filepath
als Parameter (filePath
ist ein String, ich habe bereits versucht, eine zu verwenden, Datei)
saveObjects(view.getFilePath());
view
ist eine Instanz OceanLifeView
und view.getFilePath()
ist ein Getter-Methode dieser Klasse, gibt den Pfad zurück, in dem die Datei gespeichert werden soll (als String).
getFilePath() sieht wie folgt aus:
public String getFilePath() {
return filePath;
}
Und mein OceanLifeView wie folgt aus:
OceanLifeView(String title, int type) {
if(...) {
...
}else if (title.equals("fileChooser")) {
fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(FILES_ONLY);
if (type == 0) {
//Load Button functions
System.out.println("De-Serialisation started fileChooserGUI!");
returnVal = fileChooser.showOpenDialog(fileChooser);
} else {
//Save Button functions
System.out.println("Serialisation started fileChooserGUI!");
returnVal = fileChooser.showSaveDialog(fileChooser);
}
if (returnVal == JFileChooser.APPROVE_OPTION) {
filePath = fileChooser.getSelectedFile();
}
}
}
Ich würde niemandem sehr dankbar sein, die einen Einblick für das Problem teilen kann ich oder Fehler auftreten Ich habe diese Funktionalität implementiert.
Does'view.getFilePath() 'gibt die gleich' filePath' String Sie am Ende zugewiesen? – MNos
@MNos: Ja, ich initialisierte filePath außerhalb des OceanLifeView-Konstruktors in der OceanLifeView-Klasse, um mit einer Getter-Methode darauf zuzugreifen. – Jub
Können Sie 'System.out.println (" filePath: "+ filePath);' in der ersten Zeile der 'saveObjects' Methode hinzufügen und uns die Ausgabe liefern? – MNos