在下面的程序中,循環迭代1000次,並且我正在使用FileWriter將所有條目寫入文件中,但不幸的是程序最終只寫入了510(有時是415,有時是692,總是小於1000)條目文件,但循環迭代1000次。爲什麼文件中沒有所有條目?
import java.io.* ;
import java.util.*;
public class DemoWriter {
public static void main(String[] args) throws Exception {
List<String> receiverList = new ArrayList<String>() ;
receiverList.add("[email protected]") ;
receiverList.add("[email protected]") ;
receiverList.add("[email protected]") ;
FileWriter fw = new FileWriter("a.txt") ;
BufferedWriter bw = new BufferedWriter(fw) ;
int size = receiverList.size() ;
String str ;
int count = 0 ;
for(int i = 1 ; i <= 1000 ; ++i){
str = receiverList.get((int) (Math.random() * size)) + "\n" ;
bw.write(++count + ".> " + str) ;
System.out.print(count + ".> " + str) ;
}
}
}
這是因爲文件大小或其他?
Thnx快速響應這裏所有的好人。我糾正了我的代碼(我忘記關閉流,現在代碼工作完美)。正如所有人指出我需要關閉流,但我接受BalusC,因爲他是第一個回答。
很高興在這裏你可以看到BalusC。 乾杯:)
您不想在try-catch塊的finally部分調用close() - 它會引發異常。 – 2009-11-02 18:32:28
那麼?只需抓住它並進一步忽略它,或者爲了記錄目的而執行它的e.printStackTrace()。它肯定需要在finally塊中完成,因爲否則會泄露資源。 – BalusC 2009-11-02 18:35:20