gpt4 book ai didi

java - PrintWriter 未创建具有假定行数的输出

转载 作者:行者123 更新时间:2023-12-01 11:05:58 25 4
gpt4 key购买 nike

我有一个java程序,它应该输出数据,再次接收数据,读取然后输出一些额外的结果列。 (总共有两个输出)为了测试我的程序,我只是尝试读取并打印出完全相同的 csv 以查看它是否有效。然而,我的第一次输出返回了786718行数据,这是完整且正确的,但是当再次读取并输出时,数据在第786595行被剪切,甚至该行缺少一些列数据。文件大小也是 74868KB,数据大小为 74072KB。这是因为我的 java 程序内存不足或 excel/.csv 文件的问题吗?

    PrintWriter writer = null;
try {
writer = new PrintWriter(saveFileName + " updated.csv", "UTF-8");

for (Map.Entry<String, ArrayList> entry : readOutputCSV(saveFileName).entrySet()) {
FindOutput.find(entry.getKey(), entry.getValue(), checkInMRTWriter);
}
} finally {
if (writer != null) {
writer.flush();
writer.close();
}
}

最佳答案

最可能的原因是您没有刷新或关闭 PrintWriter。

来自 Java 源代码

public PrintWriter(OutputStream out) {
this(out, false);
}

public PrintWriter(OutputStream out, boolean autoFlush) {
this(new BufferedWriter(new OutputStreamWriter(out)), autoFlush);

可以看到PrintWriter默认是有缓冲的。

默认缓冲区大小为 8 KiB,因此如果您将此数据保留在缓冲区中并且不将其写出,则最多可能会丢失最后 8 KiB 的数据。

关于java - PrintWriter 未创建具有假定行数的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32945980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com