在编写文本文件时遇到问题

时间:2012-05-11 07:05:04

标签: java file

我使用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();

4 个答案:

答案 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\nBufferedWriter.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”。