2013-12-20 55 views
-1

我在寫一個餐廳程序。 當用戶確認他的訂單時,訂單將以類型順序的數組存儲。 爲什麼?,因爲當用戶選擇關閉程序時,所有訂單都會保存在一個文件中,其中包含項目名稱和每個項目的信息。 另外,每個訂單對象都有一個其中包含類型項目的數組!關閉窗口時寫入文件

你能幫我寫下這個文件嗎? 我知道它會在processWindowEvent方法中。

這是我的嘗試,我知道我應該刪除textArea.getText()但我不知道如何打印所有項目。

protected void processWindowEvent(WindowEvent e){ 

     if (e.getID() == WindowEvent.WINDOW_CLOSING) { 
      JOptionPane.showMessageDialog(this,"All operation have been saved "); 

      try{ 
       outFile=new File("Orderslist.txt"); 
       out=new FileOutputStream(outFile); 
       ob=new PrintWriter(out);} 
       catch(IOException M){M.getMessage(); } 
      for(int i=0;i<o2.length;i++){ 
       if(o2[i]!=null){ 
        if(o2[i].getCount()<=4) 
        ob.println(o2[i].toString()+"\n--------------\n"+textArea.getText()+"--------------\n"+"\nTotal: "+o2[i].getTotalPrice()); 

        else if(o2[i].getCount()>4) 
        ob.println(o2[i].toString()+"\n--------------\n"+textArea.getText()+"--------------\n"+"\nTotal Price#: "+o2[i].getTotalPrice()+"\n\nDiscount 20%\n\n--------------\nTotal price#: "+(o2[i].getTotalPrice()-(o2[i].getTotalPrice()*0.2))); 

       } 
      } 
+0

發佈它上面 – user3102872

+0

關閉方法沒有問題,問題是獲取的文本文件是空。 – user3102872

回答

0

在你Widnow的構造函數中添加此:

public Window() { 
    this.addWindowListener(new WindowAdapter(){ 
     @Override 
     public void windowClosing(WindowEvent arg0) { 
      writeFile(textArea.getText()); //Call your method 
      System.exit(0); 
     } 
    }); 
    ... 
} 

對於寫入文件:

File file = new File("myFile.txt"); 
FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
BufferedWriter bw = new BufferedWriter(fw); 

bw.write("Texto to write"); 
bw.close(); 
+0

你的意思是我的窗戶的結構? – user3102872

+0

Java基礎知識:您有一個表示您的** Window/JFrame/Frame/etc **的類(**類MyWindow extends JFrame **)。 **每個類都有一個構造函數**。 – Sergi

0

ob.println()後做ob.close();ob.flush();

如果您不關閉流或刷新流,則不會在您的文件中打印任何內容。

0

真的,這不是最好的設計,你應該立即在文件中寫入更改。原因是,如果應用程序因任何其他原因而關閉(斷電,任務管理器死機,崩潰等),那麼您不希望丟失用戶的數據。它也值得自動備份該文件(例如在啓動後複製它),所以如果以某種方式破壞當前會話,則可以恢復。

要實際執行保存,您希望使用某種類型的FileOutputStream,但具體實現會因流的數據格式而異。例如,XML,JSON,計劃文本,二進制序列化等都相當容易,但你需要選擇一個:)