0

我有一个包含 14534 个元素的字符串数组(在 java 中)。当我将它们写入文件(csv)时,文件在 13475 个元素之后停止(在一行的中间,但我看不到任何特殊字符)。

我用调试器检查过,数组确实被填满了。

我应该使用其他方法吗?在 c++ 中我会编写二进制文件,但我不确定如何在 java 中执行此操作。字符串没有被正确识别可能是个问题吗?

FileWriter writer = new FileWriter("out.csv");

for (int i = 0; i < lines; i++){
    for (int j = 0; j < cols; j++){
        // writer.append(""+i);
        // writer.append("-");
        writer.append(""+numbers[j][i]);
        writer.append(';'); 
    }
    writer.append('\n');
}

奇怪的是,如果我添加代码来检查行(在注释中),它会再写大约 12 行。

关于尝试什么的任何建议?

4

2 回答 2

3

在检查文件内容之前刷新和/或关闭编写器。不完整的输出很可能是由于缓冲造成的。

于 2013-04-03T16:05:28.370 回答
3

你永远不会关闭你的作家 - 我怀疑数据只是卡在缓冲区中。

添加writer.flush()调用可能会显示给您 - 但实际上您应该使用try-with-resources语句(如果您使用的是 Java 7)或 try/finally 语句来始终关闭编写器。

除了确保将所有数据写入文件之外,这意味着您还将释放文件句柄......

于 2013-04-03T16:05:39.447 回答