Dans le programme suivant, loop itère 1000 fois, et j'écris toutes les entrées dans un fichier en utilisant un FileWriter, mais malheureusement les programmes finissent par écrire seulement 510 (parfois 415, parfois 692, toujours moins de 1000) entrées dans le fichier, mais la boucle itère 1000 fois.Pourquoi toutes les entrées ne vont-elles pas dans le fichier?
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) ;
}
}
}
Est-ce dû à la taille du fichier ou à quelque chose d'autre ???
Thnx pour la réponse rapide à toutes les personnes agréables ici. J'ai corrigé mon code (j'ai juste oublié de fermer le flux et maintenant le code fonctionne parfaitement). Comme tout a souligné que je dois fermer le flux, mais j'accepte BalusC comme il était le premier qui a répondu.
Nice à c BalusC ici. Cheers :)
Vous ne voulez pas appeler close() dans la partie finally d'un bloc try-catch - il déclenche une exception. –
Alors? Il suffit de l'attraper et d'ignorer davantage ou d'en faire un e.printStackTrace() à des fins de consignation. Il doit certainement être fait dans le bloc finally parce que vous feriez autrement des fuites de ressources. – BalusC