0

我有以下代码我正在尝试在文本文件中编写不同的行,但是当我添加换行符 \n 时,它不会执行我想要的操作而是所有行都在同一行上。我该如何纠正?这段代码是这样的

Writer writer = null;
File file = new File("C:/output.txt");
writer = new BufferedWriter(new FileWriter(file));
//code to iterate 
writer.write(output);
writer.write("\n");
// code to close each line
4

4 回答 4

5

在 Windows 上,默认的换行符(由记事本等使用)是"\r\n". 您可以通过调用来使用平台默认换行符BufferedWriter.newLine()

// This would replace your call to writer.write("\n")
writer.newLine();

当然,您的文件在非 Windows 机器上可能看起来很奇怪……基本上,文本文件并不像您预期​​的那样可移植。如果您想确保即使您在(例如)Linux 机器上运行writer.write("\r\n")它也能写入 Windows 换行符,那么您会改为编写。

按照这些思路,您至少应该考虑使用OutputStreamWriter包装 aFileOutputStream而不是FileWriter- 这样您就可以指定要使用的编码,例如 UTF-8。目前您的代码将使用平台默认编码,这可能不是您真正想要的。

于 2012-09-06T11:04:25.170 回答
2

尝试使用 System.getProperty("line.separator")...

于 2012-09-06T11:05:11.627 回答
2

你试过了吗

writer.newLine();

JDK的文档说:

提供了一个 newLine() 方法,它使用系统属性 line.separator 定义的平台自己的行分隔符概念。并非所有平台都使用换行符 ('\n') 来终止行。

所以它应该与底层操作系统一起工作。

于 2012-09-06T11:10:33.773 回答
0

谢谢你的帮助。只是我意识到我的代码与 '\n' 配合得很好,但问题是写入 txt 文件,然后使用记事本打开它。记事本忽略 \n 但写字板不会。

于 2012-09-11T12:03:06.290 回答