2013-07-18 21 views
1

我想出了一個問題。如何通過不同的時間調用相同的方法在文本文件中編寫多行文本?

這是我下面的方法:

public void someMethod() 
{ 
    StringBuilder newFile = new StringBuilder(); 
    String edited = "My String Line"; 
    newFile.append(edited); 
    newFile.append("\n"); 
    FileWriter fstreamWrite = new FileWriter("transaction.txt"); 
    BufferedWriter out = new BufferedWriter(fstreamWrite); 
    out.write(newFile.toString()); 
    out.close(); 
} 

,當我調用這個方法在我的主類以上的時間,所以這段代碼創建我transaction.txt用一條線「我的字符串線」。但是當我多次調用這個方法來多次寫入「我的字符串行」時,它只是覆蓋行,而不是給我輸出。

我的字符串行

我的字符串行

我的字符串行

當我調用該方法的3倍。

任何想法如何通過多次調用相同的方法多次寫入同一行?

回答

10

我想你想追加到一個文件。然後你可以使用構造FileWriter(java.io.File,boolean)

參數:

文件 - 一個文件對象寫入

追加 - 如果爲true,則將字節寫入文件末尾而不是開始

因此改變代碼:

new FileWriter("transaction.txt",true); 

要向該文件寫入新行,請使用BufferedWriter#newLine()

寫入行分隔符。行分隔符字符串由系統屬性line.separator定義,並且不一定是單個換行符('\ n')字符。

+0

是它的工作原理,但它在寫作像我的字符串相同的線LineMy的字符串LineMy的字符串線..........任何想法如何寫獨立的行 –

+0

這就是說,這是值得懷疑的是,它是一個好主意,每次你想打開一個文件追加一行。 – Ingo

+0

是的,它的工作原理,但它寫在像我的字符串LineMy String LineMy字符串行..........任何想法如何寫單獨的行 –

1

打開文件只是爲了在那裏寫幾行是個壞主意。更好的辦法是給作家傳遞給你的方法作爲參數:

public void someMethod(BufferedWriter writer) throws IOExcpetion { 
    // setup your data to write 
    StringBuilder sb = ..... 
    // actually write it 
    writer.write(sb.toString()); 
    writer.newLine() 
} 

一旦你有了這個,你可以在這樣的設置使用它:

BufferedWriter bw = null; 
try { 
    bw = .... // open the writer 
    while (...) { 
     someMethod(bw); 
    } 
    bw.close(); 
} catch (IOException io) { 
    // handle IOException here 
} 
... 
finally { 
    // make sure bw is closed 
} 
+0

+1這是一個很好的建議:) – NINCOMPOOP

相關問題