BufferedWriter 写入不完整问题
在提供的 Java 程序中,代码遇到 BufferedWriter out 未能完全写入所有预期内容的问题文本到输出文件 nyccrash.sql。这会导致 SQL 语句不完整,并且输出中缺少数据。
写入不完整的原因是由于 BufferedWriter 的默认缓冲区大小设置为 8192 个字符。这意味着,在缓冲区达到其容量之前,对 BufferedWriter 的写入操作不会立即刷新到底层文件。
在给定场景中,程序处理超过 10,000 行输入数据,产生大量数据超过缓冲区大小的 SQL 字符串。因此,缓冲区已满并保存了数百行未写入的数据。
要解决此问题,至关重要的是在写入操作完成后通过调用 BufferedWriter 上的 close() 方法来手动刷新缓冲区。此操作可确保缓冲区中的所有剩余数据在关闭之前写入文件,从而解决写入不完整的问题。
下面更正的代码包括 close() 调用:
... 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); } out.close(); } ...
以上是为什么我的 Java BufferedWriter 导致文件写入不完整?的详细内容。更多信息请关注PHP中文网其他相关文章!