Maison > Java > javaDidacticiel > Pourquoi mon Java BufferedWriter entraîne-t-il des écritures incomplètes dans un fichier ?

Pourquoi mon Java BufferedWriter entraîne-t-il des écritures incomplètes dans un fichier ?

Patricia Arquette
Libérer: 2024-12-31 13:58:10
original
627 Les gens l'ont consulté

Why Does My Java BufferedWriter Result in Incomplete Writes to a File?

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

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