2013-04-03 110 views
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行。

有什么建议吗?

回答

3

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

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

以及确保您将所有数据写入文件,这意味着您还将释放文件句柄...

+0

哇当然... – dorien

3

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