我在循环中将文本附加到CSV文件。问题是,整个过程需要很长时间+ - 1小时(因为服务器请求,但这无关紧要)。我想能够在程序中间程序失败的情况下,在我再次运行时重写文件。
这意味着,通常我想要附加到CSV,但如果它是第一个循环(添加标题的循环,也无所谓),我想关闭我的追加。
这是检查它是否是带头(第一个)或其他的循环的代码:
FileWriter writer;
try {
writer = new FileWriter(sFileName, true);
if (!headers.equals("")) {
// here is the point which will not happen twice, just if i re-run the program
writer.append(headers);
writer.append('\n');
writer.flush();
} else {
// write values to the file
writer.append(values.toString());
}
writer.flush();
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我尝试将此writer = new FileWriter(sFileName, true);
添加到else
,并将此writer = new FileWriter(sFileName);
添加到if
,但没有帮助。
如果您看起来不太清楚,请告诉我。
答案 0 :(得分:0)
由于您的程序知道是否要附加在条件内,您也可以在条件内创建您的编写器:
if (headers.length != 0) {
writer = new FileWriter(sFileName); // Do not append
// here is the point which will not happen twice, just if i re-run the program
writer.append(headers);
writer.append('\n');
} else {
writer = new FileWriter(sFileName, true); // Append
// write values to the file
writer.append(values.toString());
}
writer.flush();
writer.close();