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

Text file is overwritten on Ubuntu but appended in Windows

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

    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 上,每次我调用该函数时,它都会将数据附加到现有文件中。
即使我在每次调用之间重新启动服务器,文件也会被附加,不会创建新文件。

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

谢谢。

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

不太清楚你指的是哪个文件,但如果你问的是你在这一行创建的文件:

writer = new FileWriterWithEncoding(文件,"UTF-8", true)

只需为第二个参数使用 false,这样每次都会被覆盖。