文本文件在Ubuntu上被覆盖,但在Windows中附加

时间:2016-02-24 17:15:50

标签: java file-io append

我正在创建一个文件并将其发送回网络浏览器:

    org.joda.time.format.DateTimeFormatter fmt2 = DateTimeFormat.forPattern("ddMMyyyy");
File file = new File("VE_ximport_"+dateLivraison.toString(fmt2)+".txt");

    FileWriterWithEncoding writer;  
    writer = new FileWriterWithEncoding(file,"UTF-8", true);
    PrintWriter printer = new PrintWriter(writer);
    for (Object[] obj : results){
       //handle data 
       printer.write(data);
    }
    printer.close();

我多次调用此函数,每次都覆盖文件。 这是我正在寻找的行为 它适用于Ubuntu 但是在Windows Server 2012 R2上,每次调用该函数时,它都会将数据附加到现有文件中 即使我在每次调用之间重新启动服务器,也会附加文件,但不会创建新文件。

我生气了...
我哪里错了?

谢谢。

2 个答案:

答案 0 :(得分:1)

目前还不清楚你的意思是哪个文件,但是如果你问的是你在这一行创建的文件:

writer = new FileWriterWithEncoding(file,“UTF-8”,true)

对第二个参数使用false,因此每次都会被覆盖。

答案 1 :(得分:0)

您似乎每次只为您的文件创建相同的名称,只要您在同一天进行 - 因为您使用掩码“ddMMyyyy”转换日期变量“dateLivraison”。典型的解决方案是获取当前时间戳并将其转换为字符串,该字符串不仅反映日期,还反映时间长达几秒或几毫秒。这将确保创建的文件名的唯一性。