2012-04-18 76 views
0

我在Windows 7上,我的Formatter对象只想写出大约2500个值来存档。之后,文件在数字中间突然中断,之后就是空的。我知道while循环执行完整的4200次,iter.next()为所有这些迭代返回正确的值,因为我将它们打印出来。尽管如此,实际写入文件部分在大约第2500次写出后才结束。有任何想法吗?谢谢! -Ryan格式化程序格式化方法的输出限制?

try{... 

output = new Formatter("C:\\users\\ryans\\desktop\\IntelMA.tsv"); 
... 
} 

... 

Iterator<Double> iter = MA.getMovingAverage().iterator(); 

while (iter.hasNext()){ 
    output.format("%f\t", iter.next()); 
} 

回答

1

我的猜测是,你从来没有关闭或刷新了Formatter,所以任何缓冲输出都将丢失。

您应该在finally块中关闭它。

+0

感谢您的回复! while实际上并不在try块中,所以我不能使用finally,但我添加了一个output.close();在while循环之后。它仍然做同样的事情 - 约2500后切断。 – RyanS 2012-04-18 22:31:40

+0

@RyanS:你可以(也应该)*把它放在try块中。 (只是尝试/最后)。如果仍无法使用,请发布简短但完整的程序来证明问题。你从哪里得到数据应该没有关系(假设没有例外情况发生),所以我会开始循环和打印索引,或者随机数字。任何事情都可以简单地重现它。 – 2012-04-19 06:06:24

+0

今天早上我又试了一次,这次你的建议很有用(不知道为什么昨天不行 - 用户错误很可能)。非常感谢你。我永远不会想到这一点。我将继续将所有使用Formatter对象的代码放入try块。有这样的资源来帮助我学习是很了不起的。 – RyanS 2012-04-19 15:57:01