Troncation du texte BufferedWriter dans le fichier de sortie
Ce programme Java transforme les données CSV en commandes SQL pour l'insertion de données dans une table. Cependant, il rencontre un problème où tout le texte transformé n'apparaît pas dans le fichier SQL de sortie.
Le fichier source contient plus de 10 000 lignes de données et le programme semble fonctionner correctement, mais il s'arrête brusquement au milieu de la génération d'un Instruction SQL. Cette troncature se produit généralement après le traitement d'environ 10 000 lignes, laissant plusieurs centaines de lignes non lues.
Pour résoudre ce problème, il est nécessaire de fermer OutputStream pour garantir que toutes les données restantes sont écrites dans le fichier :
out.close();
Comprendre les tampons de sortie en Java
Un BufferedWriter en interne maintient un tampon qui stocke temporairement les données écrites. La taille du tampon par défaut est de 8 192 caractères, ce qui peut contenir des centaines de lignes de texte. Lorsque le tampon atteint sa capacité ou lorsque le flux est fermé, les données sont vidées vers le fichier sous-jacent.
Dans ce cas, la taille du tampon est suffisante pour contenir toutes les lignes de données en cours de traitement. Cependant, tant que le tampon n'est pas vidé, les données ne sont pas réellement écrites dans le fichier. La fermeture de OutputStream déclenche explicitement le processus de vidage, garantissant que tout le texte transformé est écrit dans le fichier SQL.
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!