我有一个包含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行。
对尝试什么有什么建议吗?
发布于 2013-04-04 00:05:39
你永远不会关闭你的写入器--我怀疑数据只是卡在一个缓冲区里。
添加writer.flush()调用可能会向您显示它--但实际上,您应该使用try-with-resources语句(如果您使用的是Java7),或者使用try/finally语句来始终关闭编写器。
除了确保将所有数据写入文件之外,这还意味着您将释放文件句柄……
发布于 2013-04-04 00:05:28
在检查文件内容之前刷新和/或关闭编写器。不完整的输出很可能是由于缓冲造成的。
https://stackoverflow.com/questions/15792345
复制相似问题