Problème :
Un programme Java tente de convertir les données CSV en commandes SQL rencontre des problèmes avec son fichier de sortie. Toutes les données écrites dans BufferedWriter n'apparaissent pas dans le fichier de sortie.
Détails :
Le programme lit un fichier CSV de plus de 10 000 lignes et génère des instructions SQL pour insérer le données dans un tableau. Cependant, le fichier de sortie est tronqué à mi-chemin, la dernière instruction incomplète manquant une partie d'une valeur.
Code :
// ... while((line = in.readLine())!= null) { String[] esa = line.split(","); sqlstr = "insert into nyccrash values ("+esa[0]+", "+esa[1]+", "+esa[2]+", "+esa[3]+", "+esa[4]+", "+esa[5]+", "+esa[6]+");\n"; out.write(sqlstr); } // ...
Solution :
Le problème survient car le tampon de sortie n'est pas vidé pendant le processus d'écriture. La taille du tampon par défaut pour BufferedWriter est de 8 192 caractères, ce qui est suffisant pour contenir plusieurs lignes. Une fois le tampon plein, les données ne sont pas écrites dans le fichier jusqu'à ce que le tampon soit vidé manuellement.
Pour garantir que toutes les données sont écrites dans le fichier de sortie, il est nécessaire de fermer explicitement OutputStream, qui vide tout reste. données dans le tampon :
out.close();
La fermeture du flux de sortie garantit que toutes les données, y compris l'instruction partielle, sont vidées dans le fichier avant la fermeture du programme.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!