程序终止时使用持久性javafx进行序列化

时间:2017-04-09 22:08:35

标签: java listview object serialization javafx

程序终止时序列化对象时遇到问题。我基本上创建了一个应用程序切换到从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,序列化工作,但是当我从两个场景中的任何一个终止程序,然后重新运行程序并尝试为了从同一个文件重新加载对象,该文件由于某种原因似乎是空的。

如果需要更多代码,请告诉我们。

由于

0 个答案:

没有答案