2013-12-23 60 views
2

好吧,我正在實施一個系統,我將計數保存在.txt文件中。將txt寫入文件而無需追加

計數是一個整數。

我唯一的問題是,而不是取代以前的計數;例如

"78" -> "79" 

它將新計數加到先前的計數; e.g

"78" -> "7879" 

我的代碼是:

private static void saveCount(int inCount) throws FileNotFoundException, IOException { 
    BufferedReader fbr = new BufferedReader(new FileReader("count.txt")); 
    try (FileWriter fw = new FileWriter("count.txt", (fbr.readLine() != null))) { 
     String count = Integer.toString(inCount); 
     fw.write(count); 
    } 
} 

回答

3

您正在啓用追加。替換(fbr.readLine()!=null)false禁用追加,如下所示:

private static void saveCount(int inCount) throws FileNotFoundException, 
     IOException { 
    BufferedReader fbr = new BufferedReader(new FileReader("count.txt")); 
    try (FileWriter fw = new FileWriter("count.txt", false)) { 
     String count = Integer.toString(inCount); 
     fw.write(count); 
    } 
} 
+0

不要認爲它會幫助更新內容。 –

+0

@JunedAhsan完美的作品。也許在之前的編輯中有些東西被打破了? –

+1

注意:您可以從您的答案中刪除「BufferedReader」,因爲它不再需要。 –

5

構造FileWriter的第二個參數是一個布爾標誌append。將其設置爲false以覆蓋文件而不是追加。

1

您使用的FileReader的構造函數具有參數append(boolean)。如果它是真的 - 你會附加文件的內容(並有7879)。如果它是假的 - 文件的內容將被覆蓋。

因此,似乎fbr.readLine()不爲空,所以你每次追加內容。

1

使用一個BufferedWriter放入BufferedReader並在完成後關閉它。

BufferedWriter out = new BufferedWriter(new FileWriter("count.txt")); 
    out.write(Integer.toString(inCount)); 
    out.close();