2014-01-20 78 views
0

我正在用java创建酒店预订系统。当我退出程序时,它不保留我以前输入的信息。有关如何解决此问题的任何建议?非常感谢。以Java保存信息

代码:

//Creates a method that saves the data in a file 
public void save(String filePath) { 
    try { 
     FileOutputStream fos = new FileOutputStream(filePath); 
     ObjectOutputStream out = new ObjectOutputStream(fos); 
     out.writeObject(this); 
     out.close(); 
     fos.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

//Creates a method that loads the data from the file 
public void load(String filePath) { 
    try { 
     FileInputStream fis = new FileInputStream(filePath); 
     ObjectInputStream in = new ObjectInputStream(fis); 
     ToSave save = (ToSave)in.readObject(); 
     this.setGuests(save.getGuests()); 
     this.setReservations(save.getReservations()); 
     this.setRooms(save.getRooms()); 
     in.close(); 
     fis.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

字符串FILE_PATH = “HotelReservationSystem.hrs”;

if(clicker == save) { 
      ToSave save = new ToSave(); 
      save.setGuests(Global.guests); 
      save.setReservations(Global.reservations); 
      save.setRooms(Global.rooms); 
      save.save(FILE_PATH); 
     } 

     if(clicker == load) { 
      ToSave save = new ToSave(); 
      save.load(FILE_PATH); 
      Global.guests = save.getGuests(); 
      Global.reservations = save.getReservations(); 
      Global.rooms = save.getRooms(); 
     } 
+0

所以输入工作正常,但保留获取错误信息? – dan

+0

您想在程序开始时加载您的信息。程序退出时,内存中不会保存任何内容。 – Joe

+0

当我还在程序中时,它会保存信息。但是,当我再次打开并搜索客人时,该文件为空。 – user3212307

回答

0

给你一个非常离线的建议....选择一个基于外部源的集成。使用JDBC新娘写下你的数据。

您可以选择最简单的基于MS Excel格式的集成。这样你的数据将更具可读性,并且你的程序将更加结构化。

Read more

0

什么样的对象是clicker?如果它不是像布尔或int这样的原始类型,而是一个Java对象,那么很可能是您的预期不符合您的要求。如果clicker是一个JButton,使用equals()方法来比较它的保存和加载Jbuttons中:

if(clicker.equals(save)) { 
... saving code 
} 

if(clicker.equals(load)) { 
... loading code 
} 

此外,请确保您的保存和加载代码路径正在按照预期通过使用调试器,或(如果你只是学习Java)添加一些System.out.println语句,以确保他们正在工作。

+0

这是什么答案:JButton clicker =(JButton)e.getSource(); – user3212307

+0

不要使用“==”来比较Java对象。 Java对象的“==”只是比较Java引用值,它们可能不同,因此您的保存或加载代码从不运行。改用.equals()方法,例如'if(clicker.equals(save)' – lreeder