我有以下代码我试图在文本文件中写入不同的行,但是当我添加换行符时,它不执行我想要的操作而是所有行都在同一行。我该如何纠正?代码部分是这个
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
答案 0 :(得分:5)
在Windows上,默认换行符(由记事本等使用)为"\r\n"
。您可以通过调用BufferedWriter.newLine()
:
// This would replace your call to writer.write("\n")
writer.newLine();
当然,你的文件在非Windows机器上可能看起来很奇怪......基本上文本文件并不像你想象的那样便携。如果你想确保它写入Windows换行符,即使你在writer.write("\r\n")
。
除此之外,您至少应该考虑使用OutputStreamWriter
包裹FileOutputStream
而不是FileWriter
- 这样您就可以指定要使用的编码,例如UTF-8。目前,您的代码将使用平台默认编码,这可能不是您真正想要的。
答案 1 :(得分:2)
尝试使用System.getProperty(“line.separator”)...
答案 2 :(得分:2)
你试过吗
writer.newLine();
提供了一个newLine()方法,它使用平台自己的行分隔符概念,由系统属性line.separator定义。并非所有平台都使用换行符('\ n')来终止行。
所以它应该适用于底层操作系统。
答案 3 :(得分:0)
感谢您的帮助。只是我意识到我的代码与'\ n'运行良好,但问题是写入txt文件,然后使用记事本打开它。记事本忽略\ n但字手不亮。