2014-01-20 112 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