2013-07-18 141 views
4

所以我的代碼如下所示:寫入文件時插入換行符?

try { 
    while ((line = br.readLine()) != null) { 
     Matcher m = urlPattern.matcher (line); 
     while (m.find()) { 
      System.out.println(m.group(1)); 

      //the println puts linebreak after each find 

      String filename= "page.txt"; 
      FileWriter fw = new FileWriter(filename,true); 
      fw.write(m.group(1)); 
      fw.close(); 

      //the fw writes everything after each find with no line break 
    } 
} 

我得到的輸出正確的形式在行System.out.println(m.group(1));然而,當我以後想寫什麼是m.group(1)它寫到文件中顯示不把斷行,因爲代碼沒有按」沒有一個。

回答

19

就叫fw.write(System.getProperty("line.separator"));

System.getProperty("line.separator")會爲您提供您的平臺的行分隔符(無論是Windows還是某些Unix的風味)。

+2

+1跨平臺思維 – MadProgrammer

+1

好的答案! +1 –

+0

完美:) – anno

0

只是做

fw.write("\n"); 

,將放在一個轉義字符新線

+0

但如果你打開一個文件生成的方式在記事本在Windows下,你贏了」不要看行結尾。 – mthmulders

+0

謝謝,但它會更好,它也得到組織在文件:) – anno

1

println(text)將換行符添加到字符串中,實質上與print(text); print(System.getProperty("line.separator"));相同。

所以爲了添加換行符,你必須這樣做。

然而,以提高你的代碼,我有兩個建議:

  1. 不要建立在循環新FileWriter。在循環之外創建它並在循環之後關閉它。
  2. 請勿使用FileWriter,而應使用PrintWriter纏繞FileWriter。然後,您將得到與System.out相同的println()方法。
+0

thx我記住這一點。從我剛剛開始用java編碼開始,我想完成這項工作。當我對java有更廣泛的看法時,我將進行修整,優化代碼。 – anno

0

,您可以改用System.getProperty( 「line.separator」)System.lineSeparator()