Java 如何打开和关闭文件写入程序附加?
我在循环中将文本附加到CSV文件。问题是,整个过程花费的时间太长+-1小时(因为服务器请求,但这并不重要)。我希望能够在程序中间失败的情况下,在再次运行文件时重写文件。 这意味着,通常我希望附加到CSV,但如果它是第一个循环(添加标题的循环也不重要),我希望关闭附加 下面的代码检查它是带有头的循环(第一个)还是其他循环:Java 如何打开和关闭文件写入程序附加?,java,csv,filewriter,Java,Csv,Filewriter,我在循环中将文本附加到CSV文件。问题是,整个过程花费的时间太长+-1小时(因为服务器请求,但这并不重要)。我希望能够在程序中间失败的情况下,在再次运行文件时重写文件。 这意味着,通常我希望附加到CSV,但如果它是第一个循环(添加标题的循环也不重要),我希望关闭附加 下面的代码检查它是带有头的循环(第一个)还是其他循环: FileWriter writer; try { writer = new FileWriter(sFileName, true); i
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=newfilewriter(sFileName,true)
到else
,这是:writer=newfilewriter(sFileName)代码>到如果
,则没有帮助
如果您看不清楚,请告诉我。由于您的程序知道是否在条件中追加,您也可以在条件中创建编写器:
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();
为什么不在创建writer之前检查文件是否存在?假设该文件将仅在第一次写入时创建,您也可以删除该文件并在写入方法开始时重新创建它。我可能会使用该方法,但如果该文件存在,如何删除该文件?请检查我的编辑,我已经尝试过了,在程序结束时,该文件只有少量记录,可能是最后一个循环。@OndrejTokar这意味着有时一个非空的headers
变量会在您不希望的地方传递给您的方法,非常接近输出的末尾。您想知道是什么问题吗?那是我写的。在if中刷新。这意味着我几乎是对的,但你是对的。谢谢