2011-05-25 73 views
4

我有一個Java應用程序,寫入到一個文件:如何強制Java應用程序中的Windows行結束符?

BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile)); 
bw.write(line + lineTermination); 

線路終端被定義爲:

\r\n 

我得到插進我的文件奇,神祕的空行。

我沒有得到任何多餘的線條,如果我我的代碼更改爲:

bw.write(line); 
bw.newLine(); 

但我想強制終止特定的線路,不要使用系統屬性。客戶特別要求一行結束字符 - 有些甚至有|。它不是一個可行的解決方案,只是使用\ n。

這裏是缺失行的數據的片段:

"KABE","14/01/11","14:35","14:56","1987","US","SS","CO","MARRIED WITH CHILDREN","","EINE SCHRECKLICH NETTE FAMILIE","","N","10","","12","O'NEILL ED","13","SAGAL KATEY" 

"PRO7","14/01/11","14:35","14:55","2001","US","SS","CO","SCRUBS","","SCRUBS DIE ANFAENGER","","C","10","BERNSTEIN ADAM","12","BRAFF ZACH","13","CHALKE SARAH" 

感謝您的時間:-)

+1

您確定該行沒有行終止符?使用'write(「something」+「\ r \ n」)'應該強制窗口行結束。 – Kaj 2011-05-25 17:08:25

+1

String newLine = System.getProperty(「line.separator」)。toString(); – mKorbel 2011-05-25 17:21:36

+1

事實證明,我只能在gedit中獲得這個神祕的換行符。我已經吸取了教訓,並將我的文本編輯器更新爲gVim。我的原始代碼按預期工作。現在我應該知道,總是嘗試在另一個瀏覽器/編輯器/相關應用程序! Palm to face moment :-( – mryan 2011-05-26 09:55:56

回答

9

您可以撥打

System.setProperty("line.separator", "\r\n"); 

以設置系統屬性在你的代碼裏面。

+0

獨立於我所設置的新行的系統屬性進行測試,但它不會影響字符串的寫入方式,只有\ n給出一個新行。並且我正在嘗試\ r \ n並且結果僅爲\ n。 – Boro 2011-05-25 17:24:31

+1

@Boro'BufferedWriter.newLine'正好使用此屬性。「提供了newLine()方法,該方法使用平臺自己的行分隔符概念由系統屬性line.separator定義。「[see here](http://download.oracle.com/javase/6/docs/api/java/io/BufferedWriter.html): – Howard 2011-05-25 17:27:15

+0

我同意它將設置字符,無論你使用newLine()特別調用什麼,但我期待的是,它也會影響String的解釋,當它寫入文件時,但我想我想要的太多了:) – Boro 2011-05-25 17:29:52

相關問題