2013-04-23 103 views
-3

我在寫入Java文件時遇到問題。我想寫入.txt文件,但是當程序寫入任何內容時,它會在寫入之前刪除。我不想要它。我在使用flw.append之前使用了flw.write,但沒有任何變化。你可以幫我嗎 ?Java寫入文件

public void list(String path) throws IOException { 

      FileWriter flw=new FileWriter(path); 

    flw.append("----------------------------------------------List---------------------------------------------\n"); 

      for (int i = 0; i < athCtr - 1; i++) { 
     flw.append("Author:" + athr[i].getId() + "\t" 
       + athr[i].getName() + "\t" + athr[i].getUniv() + "\t" 
       + athr[i].getDepart() + "\t" + athr[i].getEmail()+"\n"); 

     if (athr[i].getArtCtr() != 0) { 
      for (int j = 0; j < athr[i].getArtCtr(); j++) { 
       flw.append("+" + athr[i].getArticle(j) + ":"); 
       for (int k = 0; k < artCtr; k++) { 
        if (art[k].getPaperId().equals(athr[i].getArticle(j))) { 
         flw.append("\t" + art[k].getName() + "\t" 
           + art[k].getPublisherName() + "\t" 
           + art[k].getPublishYear()+"\n"); 


        } 
       } 

      } 
      flw.append("\n"); 
     } 
    } 

    flw.append("Author:" + athr[athCtr - 1].getId() + "\t" 
      + athr[athCtr - 1].getName() + "\t" 
      + athr[athCtr - 1].getUniv() + "\t" 
      + athr[athCtr - 1].getDepart() + "\t" 
      + athr[athCtr - 1].getEmail()+"\n"); 
    if (athr[athCtr - 1].getArtCtr() != 0) { 
     for (int j = 0; j < athr[athCtr - 1].getArtCtr(); j++) { 
      flw.append("+" + athr[athCtr - 1].getArticle(j) + ":"); 
      for (int k = 0; k < artCtr; k++) { 
       if (art[k].getPaperId().equals(
         athr[athCtr - 1].getArticle(j))) { 
        flw.append("\t" + art[k].getName() + "\t" 
          + art[k].getPublisherName() + "\t" 
          + art[k].getPublishYear()+"\n"); 

       } 
      } 
     } 
    } 
    flw.append("----------------------------------------------End----------------------------------------------\n\n"); 
    flw.close(); 
} 
+3

「我想寫入.txt文件,但是當程序寫入任何內容時,它會在寫入之前刪除,我不想要它。」什麼? – 2013-04-23 18:03:04

+0

可能的重複http://stackoverflow.com/q/1625234/876142 – 2013-04-23 18:03:52

+0

http://stackoverflow.com/questions/1625234/how-to-append-text-to-an-existing-file-in-java - - 看到這個。 – 2013-04-23 18:03:58

回答

6

這個問題,因爲它已被要求,並回答了很多很多次,但關鍵是要使用正確的FileWriter的構造函數,一個作爲第二個參數是需要真正的也許應該被關閉。第二個真實參數告訴Java打開文件以進行附加而不是覆蓋。

//FileWriter flw = new FileWriter(path); // not this 
FileWriter flw = new FileWriter(path, true); // but this 

事實上,我投票結束這個問題的重複。另外:您可能不想直接用FileWriter編寫,而是想將其包裝在BufferedWriter或(我的首選)PrintWriter實例中。這將允許您使用println(...)和其他熟悉的方法簡單高效地寫入文件。

編輯2:在查看更多代碼後,我認爲實際上應該考慮使用PrintWriter類,然後使用printf(...)方法編寫,因爲這允許格式化的字符串輸出,這比一堆選項卡正如你正在做的那樣。

+0

謝謝它非常有用。 – Suheyb 2013-04-23 18:18:40

+0

@Suheyb:不客氣。在仔細查看代碼之後,我認爲實際上你應該考慮使用PrintWriter類,然後使用'printf(...)'方法編寫代碼,因爲這樣可以實現格式化的字符串輸出,比起一堆選項卡正如你正在做的那樣。 – 2013-04-23 18:21:37

+0

我使用BufferedWriter類和newLine()方法修復了此問題。 – Suheyb 2013-04-23 18:27:34