2017-05-08 62 views
-1

我有這種方法,每一個,它被稱爲一次寫入一個文件:寫不同的線路到文件

public void writeToFile(String ins) { 
    FileWriter fw = new FileWriter(f); 
    BufferedWriter bw = new BufferedWriter(fw); 

    bw.write(ins); 
    bw.newLine(); 

    bw.close(); 
    fw.close(); 
} 

但只寫在文件的第一行。

所以,如果我把它稱爲與「世界」,「你好」,然後再一次,該文件將包含「世界」,但是我正在尋找的結果是:

你好

世界

我之前和寫入字符串後使用BufferedWriter.newLine()嘗試,但結果是一樣的嗎?

+2

你檢查FileWriter的文檔?查看構造函數的第二個參數:https://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html#FileWriter(java.io.File,%20boolean)(換句話說,你想'追加'到一個文件,而不是寫/覆蓋它) – domsson

+2

可能重複的[如何將文本添加到現有的文件在Java](http://stackoverflow.com/questions/1625234/how-to-附加文本到現有文件在java) – Tom

+0

http:// stackoverflow。com/questions/1625234 /如何追加文本到java中的現有文件 – AppX

回答

3

你必須使用FileWriter(String fileName, boolean append)

FileWriter fw = new FileWriter(f, true); 
3

讀取的FileWriter的documentation

FileWriter的(文件文件,布爾附加) 構造給出布爾值,指示是否要寫入的數據附加文件名的FileWriter對象。

,你看,你需要追加值設置爲true:

FileWriter fw = new FileWriter(f, true); 
2

的一點是:你的代碼做的是什麼應該這樣做 - 它使用FileWriter,默認情況下創建一個新的空文件;它寫入一個字符串;並關閉FileWriter。

如果你想寫多行;你要麼必須

  • 以附加模式使用FileWriter寫入時(通過使用第二,對於FileWriter的構造與true布爾參數)
  • 改變你的方法取一個字符串列表,寫所有的人立刻
+0

我喜歡這樣的說法:「你的代碼做它應該做的事情」這通常是正確的,但開發人員不會編寫它應該完成的任務;) – AxelH

2

可以使用轉義字符:

\b Insert a backspace in the text at this point. 
\n Insert a newline in the text at this point. 
\r Insert a carriage return in the text at this point. 

我建議你使用的資源儘量讓Java來關閉該文件時,它會需要

public void writeToFile(String ins) { 

    String fileName= "file.txt"; 

    try (FileWriter fileWritter = new FileWriter(fileName, true)) { 

     fileWritter.write(ins + "\r\n"); 

    } catch (IOException ex) { 

    } 
} 

給這個方法的空字符串「」的文件中插入一個「回車」

相關問題