2012-05-29 120 views
7

好的,我有一些麻煩寫入多行文本文件。與文件作者覆蓋文件,而不是追加到末尾的問題

程序運行,但它不會使用新的生產線,每次

時,我希望它運行的4倍,該文本文件應該是這樣的:

a 
b 
c 
d 

相反,它是這樣的:

d 

誰知道如何解決這個問題?所有導入都正確導入。

源(它被略加編輯,承擔一切都正確定義):

import java.io.*; 
public class Compiler { 
public static void main (String args[]) throws IOException 
{ 
    //there's lots of code here 
    BufferedWriter outStream= new BufferedWriter(new FileWriter("output.txt")); 
    outStream.newLine(); 
    outStream.write(output); 
    outStream.close(); 
} 

} 
+1

只是一個警告,但這是危險地接近「什麼是代碼」問題。然而,既然你不是簡單地尋求幫助(你展示了你迄今爲止所做的),我會視而不見。 –

回答

15

確保當你創建一個FileWriter的實例,你是追加到它的結束。這可以通過使用this specific FileWriter constructor來完成,其將boolean作爲第二參數。這boolean告訴FileWriter追加到文件的末尾,而不是覆蓋文件。

BufferedWriter outStream= new BufferedWriter(new FileWriter("encoded.txt", true)); 
+0

我對java的輸入和輸出有點新,所以我可以得到一個例子嗎?我現在不在理想的地方進行測試(在此工作站上沒有JDK或IDE) – Azulflame

+1

我的回答已經提供了您應該應用於此工作的更改。 –

+0

我寫到,當它沒有代碼。謝謝你的答案。 – Azulflame

2

默認FileWriter將覆蓋該文件。你可能會想要做的就是按以下方式確定讀者:
new FileWriter("encoded.txt", true)
這樣該文件將追加到而不是被覆蓋

希望這有助於!

0

我不知道這段代碼應該做什麼。如果您的輸入字符串長度超過一個字符,它會引發錯誤,因爲您在循環內關閉了FileWriter,然後嘗試再次寫入。

我用下面的方式解釋你的問題:你想知道爲什麼只有最近的輸出是在文件中。在這種情況下,這是因爲您沒有以追加模式創建FileWriter。查看FileWriter可用的不同構造函數,並使用允許您附加到該文件的構造函數。