文本文件在 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,这样每次都会被覆盖。
我正在创建一个文件并将其发送回 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,这样每次都会被覆盖。