首页 > Java > java教程 > 为什么我的 BufferedWriter 没有将所有数据刷新到输出文件?

为什么我的 BufferedWriter 没有将所有数据刷新到输出文件?

Patricia Arquette
发布: 2024-12-18 00:46:10
原创
149 人浏览过

Why Isn't My BufferedWriter Flushing All Data to the Output File?

BufferedWriter 未将数据刷新到输出文件

问题:

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板