2012-04-18 77 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