将输出数据写入文本文件给出文本文件中不完整的结果

问题描述:

我有14个列表,每个列表都有数字或字符串数​​据。每个列表的大小是32561.我必须输出与所述格式的文件:将输出数据写入文本文件给出文本文件中不完整的结果

list1_element1 list2_element1.......................list14_element1 
list1_element2 list2_element2.......................list14_element2 
. 
. 
. 
. 
. 
list1_element32561 list2_element32561.......................list14_element32561 

在输出文件中的每个元素由标签空格分开。我在Java中是这样做的。

 out = new BufferedWriter(new FileWriter(fileName)); 
     for(int i=0; i<32561; i++) { 
     out.write(firstList.get(i)); 
     out.write("\t"); 
     out.write(secondList.get(i)); 
     out.write("\t"); 
     out.write(thirdList.get(i)); 
     out.write("\t"); 
     out.write(fourthList.get(i)); 
     out.write("\t"); 
     out.write(fifthList.get(i)); 
     out.write("\t"); 
     out.write(sixthList.get(i)); 
     out.write("\t"); 
     out.write(seventhList.get(i)); 
     out.write("\t"); 
     out.write(eighthList.get(i)); 
     out.write("\t"); 
     out.write(ninthList.get(i)); 
     out.write("\t"); 
     out.write(tenthList.get(i)); 
     out.write("\t"); 
     out.write(eleventhList.get(i)); 
     out.write("\t"); 
     out.write(twelvethList.get(i)); 
     out.write("\t"); 
     out.write(thirteenthList.get(i)); 
     out.write("\t"); 
     out.write(fourteenthList.get(i)); 
      out.write("\t"); 
     out.write(fifteenthList.get(i)); 

     out.newLine(); 
    } 
} 

我的程序只打印32441行,最后一行仅包含6列。我不明白为什么。有人可以帮忙吗?

您没有关闭Writer。

+0

如果我不关闭它,它会提供不完整的输出吗? – user1982519

+0

你*不是*关闭它,你* *得到不完整的输出。我不知道你为什么要问。 – EJP

缓冲区只写入流中,或者你调用writer.flush()或writer.close()函数。在你的情况,你只需要添加

out.close()

在程序的结束。否则,你的缓冲区中的数据不会随着程序的结束而被写入,而不会告诉写入者写入其缓冲区的剩余内容;它假设将会有更多的数据来支持它!

您还没有提供完整的方法代码,但问题可能是“未关闭写入程序并且未正确刷新输出缓冲区”。

当您需要刷新输出缓冲区时使用out.flush();。当您结束写入文件时,您还可以使用out.close;

或者

可以使用的PrintWriter:

PrintWriter writer = new PrintWriter(new FileWriter("file name"), true); 

得到()调用println时自动刷新输出缓冲区或格式()或printf()的呼吁作家。或者,您可以手动使用writer.flush()来根据需要刷新输出缓冲区。

+0

您在关闭前不必冲洗。 – EJP

+0

是的,我会编辑它。 – UDPLover