Problème d'écriture incomplète de BufferedWriter
Dans le programme Java fourni, le code rencontre un problème où BufferedWriter ne parvient pas à écrire complètement tout le contenu prévu. texte dans le fichier de sortie nyccrash.sql. Cela entraîne des instructions SQL incomplètes et des données manquantes dans la sortie.
La cause de l'écriture incomplète est due à la taille de tampon par défaut de BufferedWriter, qui est définie sur 8 192 caractères. Cela signifie que les opérations d'écriture sur BufferedWriter ne seront pas immédiatement vidées vers le fichier sous-jacent jusqu'à ce que le tampon atteigne sa capacité.
Dans le scénario donné, le programme traite plus de 10 000 lignes de données d'entrée, générant une grande quantité de chaînes SQL qui dépassent la taille du tampon. Par conséquent, le tampon devient plein et contient plusieurs centaines de lignes de données non écrites.
Pour résoudre ce problème, il est crucial de vider manuellement le tampon en appelant la méthode close() sur BufferedWriter une fois les opérations d'écriture terminées. . Cette action garantit que toutes les données restantes dans le tampon sont écrites dans le fichier avant sa fermeture, résolvant ainsi le problème d'écriture incomplète.
Le code corrigé ci-dessous inclut l'appel close() :
... 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); } out.close(); } ...
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!