Maison > Java > javaDidacticiel > Pourquoi mon BufferedWriter ne transfère-t-il pas toutes les données dans le fichier de sortie ?

Pourquoi mon BufferedWriter ne transfère-t-il pas toutes les données dans le fichier de sortie ?

Patricia Arquette
Libérer: 2024-12-18 00:46:10
original
149 Les gens l'ont consulté

Why Isn't My BufferedWriter Flushing All Data to the Output File?

BufferedWriter ne vide pas les données dans le fichier de sortie

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);
}
// ...
Copier après la connexion

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal