2011-05-25 63 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

相关问题