如何打开和关闭文件编写器追加?

时间:2014-08-28 07:31:47

标签: java csv filewriter

我在循环中将文本附加到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,但没有帮助。

如果您看起来不太清楚,请告诉我。

1 个答案:

答案 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();