我正在尝试编写一个快速的java程序来获取csv并在SQL中创建插入语句。我不需要所有列,否则我将直接通过 csv 导入数据。当我实际写入文件时,我的特殊问题就出现了。编写器应该向文件输出 200 多行,但只输出了 190 行左右。我正在使用 eclipse,想知道 eclipse 是否在 IO 完成之前关闭程序,但我不知道如何检查。这是执行写入操作的代码:
FileWriter fw = new FileWriter("CountriesOut.csv");
CSVWriter writer = new CSVWriter(fw);
for (int i = 0; i < line.size(); i++) {
fw.write("INSERT INTO Country (CountryID, CountryName, CountryLocation, SummerFirstAppearance, WinterFirstAppearance) VALUES (");
writer.writeNext(line.get(i));
fw.write(");\n");
}
我正在使用 openCSV 来解析和 Eclipse IDE。同样相关的是,它在行的中间切断,所以我知道它不仅仅是在循环期间的某个点终止。
最佳答案
I'm using eclipse and was wondering if eclipse shuts the program down before the IO is done
不。
问题是您的应用程序在写入所有已缓冲的数据之前退出。 (这很可能是在与 Eclipse 不同的 JVM 中,而 Eclipse 没有参与其中。)
在应用程序结束时,您应该调用fw.close()
。
此外,建议在 writeNext(...)
调用之后和以下 fw.write( ...)
。 CSVWriter
的 javadoc 没有说明它是否进行任何缓冲。如果确实如此,则需要刷新才能使输出源正确“交错”。
关于Java fileWriter 没有将我的所有输出写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27140730/