【问题标题】:How do I force Windows line endings in Java app?如何在 Java 应用程序中强制 Windows 行结尾?
【发布时间】:2011-05-25 17:04:29
【问题描述】:

我有一个 Java 应用程序写入文件:

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

行终止定义为:

\r\n

我的文件中插入了奇怪而神秘的空白行。

如果我将代码更改为:

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

但我想强制一个特定的行结束,而不是使用系统属性。客户特别要求一个行结束符——有些甚至有 |。仅使用 \n 是不可行的解决方法。

这是缺少行的数据的 sn-p:

"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"

感谢您的宝贵时间 :-)

【问题讨论】:

  • 您确定该行还没有行终止符吗?使用 write("something" + "\r\n") 应该强制窗口行结束。
  • String newLine = System.getProperty("line.separator").toString();
  • 事实证明,我只在 gedit 中得到了这个神秘的换行符。我吸取了教训并将我的文本编辑器更新为 gVim。我的原始代码按预期工作。我现在应该知道总是在另一个浏览器/编辑器/相关应用程序中尝试!!!!掌心面对面的时刻:-(

标签: java file io


【解决方案1】:

你可以打电话

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

为了在你的代码中设置系统属性。

【讨论】:

  • 独立于我为新行设置的系统属性测试它仍然不会影响字符串的写入方式,只有 \n 给出一个新行。我在 Win 上,我正在尝试 \r\n,结果与只有 \n 一样。
  • @Boro BufferedWriter.newLine 正是使用了这个属性。 “提供了一个 newLine() 方法,它使用平台自己的行分隔符概念,由系统属性 line.separator 定义。” see here:
  • 我同意它会在使用newLine() 专门调用时设置您给出的任何字符,但我期望它在将字符串写入文件时也会影响对字符串的解释。但我想我想要的太多了。 :)
  • 有没有办法在不改变整个应用程序的系统属性的情况下强制写入\r?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-19
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多