Java 如何打开和关闭文件写入程序附加?

Java 如何打开和关闭文件写入程序附加?,java,csv,filewriter,Java,Csv,Filewriter,我在循环中将文本附加到CSV文件。问题是,整个过程花费的时间太长+-1小时(因为服务器请求,但这并不重要)。我希望能够在程序中间失败的情况下,在再次运行文件时重写文件。 这意味着,通常我希望附加到CSV,但如果它是第一个循环(添加标题的循环也不重要),我希望关闭附加 下面的代码检查它是带有头的循环(第一个)还是其他循环: FileWriter writer; try { writer = new FileWriter(sFileName, true); i

我在循环中将文本附加到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=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中刷新。这意味着我几乎是对的,但你是对的。谢谢