经过大量时间研究这个问题,并自己进行一些计数/调试后,我发现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);
}
答案 0 :(得分:1)
解决。
在将其重新实例化为新文件之前,我没有刷新/关闭我的编写器。我应该创建一个mergedWriters数组,或者每次重新分配它之前刷新/关闭它。