FileWriter 没有写入其所有内容 - 如何绕过最大值?

问题描述 投票:0回答:2

经过大量时间研究这个问题,并自己进行了一些计数/调试,我发现 FileWriter 一次可以包含的最大字符数约为 1216。谁能帮我弄清楚如何获取围绕这个问题?

我实际上是在用 Java 编写一个脚本来组合两个 .csv 文件,因为我需要将每个文件的内容并排放在一个 .csv 文件中。我遍历并将字符连同逗号和换行符附加到文件编写器。然而,在整个写作过程中,我所有的输出都停止了大约 80%。我没有收到任何错误,但现在对我来说很明显这是 FileWriter 容量的问题。

如果我写了我所拥有的然后开始附加到一个新的 FileWriter,我将失去我在 .csv 文件中的位置。我不太确定在这里做什么。

我期待反馈。谢谢!

编辑-代码

问题出在 mergedWriter 上。

我已经验证“mainLines[j].size() - 1”的长度是 101,它只为我的输出写了 85 行。它在中弦停止。

for (int k = 0; k < mainLines[j].size() - 1; k++) {
                // All deletions for bottleneck
                if (k != 0) {
                    eachEffWriter.append(mergedFileNum + COMMA + "1," + mainLines[j].get(k)[6] + NEWLINE);
                    efficiencyWriter.append(mergedFileNum + COMMA + "1," + mainLines[j].get(k)[5] + NEWLINE);
                }
                // Write deletionoutput data
                StringBuilder builder = new StringBuilder();
                for (String str : mainLines[j].get(k)) {
                    builder.append(str);
                    builder.append(COMMA);
                }
                builder.append(COMMA);
                if (k == 0) {
                    builder.append(COMMA);
                }

                for (String str : kingpinLines[j].get(k)) {
                    builder.append(str);
                    builder.append(COMMA);
                }
                mergedWriter.append(builder.toString());
                mergedWriter.append(NEWLINE);
            }
java csv io filewriter bufferedwriter
2个回答
4
投票

解决了

在将它重新实例化到一个新文件之前,我没有刷新/关闭我的编写器。我应该制作一个 mergedWriters 数组,或者在每次重新分配之前刷新/关闭它。


0
投票

写系统后添加

fw.close()

© www.soinside.com 2019 - 2024. All rights reserved.