如何知道是否所有内容都附加到csv?

时间:2014-07-23 08:34:21

标签: java csv

这是我的代码:

public static void writeDataToCSV(CustomObjectData customObjectData, int pageCounter) {
    try {
        int i = 0;
        int elementCounter = 0;
        List<String> values = new ArrayList<>();
        String tmp = "";

        // System.out.println("Size of customobjectdata elements, should be 1000: 
"+customObjectData.elements.size());

        for (CustomObjectDataElements x : customObjectData.elements) {
            for (FieldValue y : x.fieldValues) {
                values.add(y.value);
            }
            for (String element : values) {
                tmp += element + ";";
            }

            writer.append(tmp.substring(0, tmp.length() - 1) + "\r\n");
            // count elements written into file to track in case of failure
            elementCounter++;
            if (elementCounter % 20 == 0) {
                System.out.print("*");
            }
            System.out.println("");

            FileWriter out = new FileWriter("data\\resumeat.txt");
            System.out.print(elementCounter+pageCounter*1000+"");
            out.write(elementCounter+pageCounter*1000+"");
            out.close();
            values.clear();
            tmp = "";
        }
        System.out.println("Records: "+pageCounter*1000+" - "+ 
((pageCounter+1)*1000-1) +" written to csv.");
        // System.out.println("Headers: "+CSVHeaders+" Values: "+CSVValues);

        System.out.print(".");

        if (i >= 99) {
            System.out.println("");
            i = -1;
        }

        i++;

    } catch (IOException e) {
        e.printStackTrace();
    }

}
}

这是将记录附加到csv的简单方法。不幸的是,我需要跟踪导入的每条记录,这样如果程序崩溃,我可以从该记录开始。

我通过将最后附加的元素数量保存到txt文件来尝试它。

但是,在我写过的txt文件中,例如2000年和csv只是1987年的记录。这意味着如果我使用writer.append,它不会立即执行。即使我的计数器在追加之后也是如此。看起来程序不会等到它被追加。如果它已被附加或任何想法,我能以某种方式检查吗?

1 个答案:

答案 0 :(得分:2)

如果你使用BufferedWriter,它的名字就是它的名字:我使用了一个缓冲区。如果您在某个时间点确定已写出该缓冲区中的所有数据,则必须向writer.flush发出呼叫(除非您已关闭writer)。