2011-11-30 66 views
0

我有一种方法,使用DataOutputStream.writeBytes(String)方法将字符串写入文本文件。如果我写一个带有换行符的字符串,例如"I need \n help!",则新行不会显示在记事本或其他基本文本编辑器中。但是,它确实出现在写字板,MS Word等。为什么这个,我可以修复它?用Java编写文本文件

+2

有关的排序,尝试更好的编辑器,如Notepad ++,http://notepad-plus-plus.org/。我经常使用对行结束符(\ n与\ r与\ r \ n)非常敏感的文件格式(ER7/HL7)和非打印ASCII字符集,该编辑器能够显示这些文件以查看真正的内容那里。它是免费的,试试看看它是否对你有帮助! – Freiheit

回答

2

通常使用真正的文本编辑器,其中记事本不是。

如果您不打算使用理解不同风味的文本编辑器,或者通过为您进行转换的某些内容过滤文件,则需要编写系统特定的换行符。

System.getProperty("line.separator"); 

这会给你一个操作系统特定的行分隔符。它比你想象的要少。

System.out.printf("%n"); 

这也是一样的(并且在String.format中也有提供);也比你想象的要少。这更多的是编辑器,因为任何文件都可以存在于任何系统上,可以用任何编辑器编辑。

1

您应该使用System.getProperty("line.separator");而不是直接使用\ n。

+0

您也可以使用\ r \ n代替。它涵盖了所有的基地,并没有搞砸任何东西。每千行节省几毫秒,所以没有太大的差别。 – Jon