我使用FileWriter
类用Java编写文本文件。
“\ n”无法正常工作,为了解决这个问题,我使用了BufferedWriter
类及其方法newLine()
。它帮助我进入下一行,但唉,它总是继续修改我以前的文件。每当我运行程序时,我都希望生成一个新文件!
请有人帮我这一部分。为什么“\ n”不起作用?我的问题的可能解决方案是什么?
FileWriter write = new FileWriter ("D:/final project/report.txt", true);
BufferedWriter bufferedWriter = new BufferedWriter (write);
bufferedWriter.write("Current Time : " + hour + ":"+ minute + ":" + second + " " + am_pm);
bufferedWriter.newLine();
bufferedWriter.write("Current Date : " + date + "/"+ (month+1) + "/" + year + " d/m/y ");
bufferedWriter.newLine();
答案 0 :(得分:3)
你真的有两个完全正交的问题......
我希望每次运行程序时都要生成一个新文件!
目前您正在创建FileWriter
:
new FileWriter ("D:/final project/report.txt", true);
这是使用constructor overload with an append
parameter,您设置为true
...建议您想要附加到现有文件。
如果不想要附加到现有文件,为什么要为该参数指定true
?请改为指定false
,或者只使用没有该参数的重载,并默认覆盖该文件。
我个人强烈建议不要直接使用FileWriter
- 我会在FileOutputStream
中使用OutputStreamWriter
,以便您可以指定编码。否则它将使用平台默认编码,这很少是IMO的好主意。 (当我有选择时,我个人倾向于使用UTF-8。)
为什么“\ n”不起作用?
它的工作原理是将\n
字符(U + 000A)写入文件。但无论您使用读取该文件,大概都不会将其视为换行符 - 因为Windows上的换行符通常为\r\n
。 BufferedWriter.newLine()
将使用平台默认换行符,这就是为什么有效。
答案 1 :(得分:2)
使用正确的行分隔符:
String lineSep = System.getProperty("line.separator");
答案 2 :(得分:0)
您可以使用FileOutputStream并将其包装在DataOutputStream
中 FileOutputStream fo=new FileOutputStream("c:/xyz/report.txt");
DataOutputStream ds=new DataOutputStream(fo);
ds.writeBytes("Current Time : " +new Date() );
ds.writeBytes(System.getProperty("line.separator")+"Current Date : " +new Date() );
答案 3 :(得分:-1)
Java使用回车符和换行符终止每一行,而不仅仅是换行符。那就是Java终止使用“\ r \ n”而不是“\ n”。