FileWriter没有写出它的所有内容 - 如何绕过最大值?

时间:2015-11-01 20:11:03

标签: java csv io filewriter bufferedwriter

经过大量时间研究这个问题,并自己进行一些计数/调试后,我发现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);
            }

1 个答案:

答案 0 :(得分:1)

解决。

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