问题:
Java 程序尝试将 CSV 数据转换为 SQL 命令其输出文件遇到问题。并非所有写入 BufferedWriter 的数据都会出现在输出文件中。
详细信息:
程序读取超过 10,000 行的 CSV 文件,并生成 SQL 语句来插入数据到表中。但是,输出文件中途被截断,最后一个不完整的语句缺少部分值。
代码:
// ... while((line = in.readLine())!= null) { String[] esa = line.split(","); sqlstr = "insert into nyccrash values ("+esa[0]+", "+esa[1]+", "+esa[2]+", "+esa[3]+", "+esa[4]+", "+esa[5]+", "+esa[6]+");\n"; out.write(sqlstr); } // ...
解决方案:
出现此问题是因为在写入过程中输出缓冲区未刷新。 BufferedWriter 的默认缓冲区大小为 8192 个字符,足以容纳多行。缓冲区满后,直到手动刷新缓冲区后,数据才会写入文件。
为了确保所有数据都写入输出文件,需要显式关闭 OutputStream,这会刷新所有剩余数据缓冲区中的数据:
out.close();
关闭输出流可以保证在程序退出之前将所有数据(包括部分语句)刷新到文件中。
以上是为什么我的 BufferedWriter 没有将所有数据刷新到输出文件?的详细内容。更多信息请关注PHP中文网其他相关文章!