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

Java 如何知道是否所有内容都附加到csv?,java,csv,Java,Csv,这是我的密码: public static void writeDataToCSV(CustomObjectData customObjectData, int pageCounter) { try { int i = 0; int elementCounter = 0; List<String> values = new ArrayList<>(); String tmp = "";

这是我的密码:

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();
    }

}
}
public static void writeDataToCSV(CustomObjectData CustomObjectData,int pageCounter){
试一试{
int i=0;
int元素计数器=0;
列表值=新的ArrayList();
字符串tmp=“”;
//System.out.println(“customobjectdata元素的大小应为1000:
“+customObjectData.elements.size());
for(CustomObjectDataElements x:customObjectData.elements){
用于(字段值y:x.fieldValues){
加上(y值);
}
for(字符串元素:值){
tmp+=元素+“;”;
}
writer.append(tmp.substring(0,tmp.length()-1)+“\r\n”);
//计数写入文件的元素,以便在出现故障时进行跟踪
elementCounter++;
if(元素计数器%20==0){
系统输出打印(“*”);
}
System.out.println(“”);
FileWriter out=新的FileWriter(“data\\resumeat.txt”);
系统输出打印(elementCounter+pageCounter*1000+“”);
out.write(元素计数器+页面计数器*1000+“”);
out.close();
value.clear();
tmp=“”;
}
System.out.println(“记录:“+pageCounter*1000+”-“+
((分页计数器+1)*1000-1)+“写入csv”);
//System.out.println(“标题:+CSV标题+”值:+CSV值);
系统输出打印(“.”);
如果(i>=99){
System.out.println(“”);
i=-1;
}
i++;
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
将记录附加到csv是一种简单的方法。不幸的是,我需要跟踪导入的每一条记录,所以如果程序崩溃,我可以从该记录开始

我试着将最后追加的元素数保存到txt文件中


但是,在txt文件,我写了例如2000年和csv的只是1987年的记录。这意味着如果我使用writer.append,它不会立即执行。即使我的计数器在那个附加之后。看起来程序不会一直等到附加它。我是否可以检查它是否已经被追加或有任何想法?

如果使用a,它将按照其名称执行:我使用缓冲区。如果在某个时间点,您希望确保该缓冲区中的所有数据都已写入,则必须调用
writer.flush
(除非您已关闭
writer
)。

我认为您是对的,很快我将接受答案,谢谢。