程序终止时序列化对象时遇到问题。我基本上创建了一个应用程序切换到从scene1到scene2
scene2将数据显示到ListView中。
当我最初运行程序时,我从scene1转到具有listview的scene2,让我说我在listview中添加一些东西,然后返回到场景1,然后返回到具有listview的scene2,当我将其保存到'file.txt'时,数据是持久的序列化。
然而,当我关闭两个场景窗口中的任何一个时,我尝试将对象数据保存到同一个文件中,当我重新运行应用程序时,文件为空或出于某种原因
请非常感谢任何帮助。
以下是我的序列化代码:
public static void writeApp(DataList dl) throws IOException{
//@SuppressWarnings("resource")
FileOutputStream fos = new FileOutputStream("file.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(dl);
oos.flush();
oos.close();
}
public static DataList readApp() throws IOException, classNotFoundException {
// @SuppressWarnings("resource")
FileInputStream fis = new FileInputStream(storeFile);
ObjectInputStream ois = new ObjectInputStream(fis);
DataList dl = (DataList)ois.readObject();
//ois.close();
return dl;
}
这是我在场景关闭(终止)时用来保存数据的代码:( cDL全局声明为DataList cDL = new DataList)
我试过两个场景
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
public void handle(WindowEvent we) {
try {
cDL = AdminController.dl;
DataList.writeApp(cDL);
Platform.exit();
} catch (IOException e) {
System.out.println(e.getMessage());
}
System.out.println("Controller is closing");
}
});
}
当程序运行时我向scene2的listview添加东西并切换到scene1并返回到scene2,序列化工作,但是当我从两个场景中的任何一个终止程序,然后重新运行程序并尝试为了从同一个文件重新加载对象,该文件由于某种原因似乎是空的。
如果需要更多代码,请告诉我们。
由于