csv FileWriter不写它的所有内容-如何绕过最大?

xv8emn3q  于 2023-04-03  发布在  其他
关注(0)|答案(2)|浏览(100)

经过大量的时间研究这个问题,并做了一些计数/调试自己,我发现,最大数量的字符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);
            }
thtygnil

thtygnil1#

解决了。
我没有在重新示例化到一个新文件之前刷新/关闭我的writer。我应该做一个mergedWriters数组,或者在重新分配它之前每次刷新/关闭它。

webghufk

webghufk2#

在写入系统后添加fw.close()

相关问题