首页 >Java >java教程 >为什么我的 Java BufferedWriter 导致文件写入不完整?

为什么我的 Java BufferedWriter 导致文件写入不完整?

Patricia Arquette
Patricia Arquette原创
2024-12-31 13:58:10655浏览

Why Does My Java BufferedWriter Result in Incomplete Writes to a File?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn