经过大量的时间研究这个问题,并自行进行了一些计数/调试后,我发现FileWriter一次可以包含的最大字符数约为1216。有人可以帮助我找出解决方法这个问题?

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

如果我写了什么然后开始附加到新的FileWriter,我将在.csv文件中失去位置。我不太确定该怎么做。

我期待收到反馈。谢谢!!

编辑-代码

问题在于mergedWriter。

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

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);
            }

最佳答案

解决了。

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

关于java - FileWriter不写其所有内容-如何解决最大值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33466688/

10-12 05:33