Heim >Java >javaLernprogramm >Warum führt mein Java BufferedWriter zu unvollständigen Schreibvorgängen in eine Datei?

Warum führt mein Java BufferedWriter zu unvollständigen Schreibvorgängen in eine Datei?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-31 13:58:10622Durchsuche

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

Problem mit unvollständigem BufferedWriter-Schreiben

Im bereitgestellten Java-Programm stößt der Code auf ein Problem, bei dem der BufferedWriter nicht alle beabsichtigten Daten vollständig schreiben kann Text in die Ausgabedatei nyccrash.sql. Dies führt zu unvollständigen SQL-Anweisungen und fehlenden Daten in der Ausgabe.

Die Ursache für den unvollständigen Schreibvorgang liegt in der Standardpuffergröße von BufferedWriter, die auf 8192 Zeichen eingestellt ist. Dies bedeutet, dass die Schreibvorgänge an den BufferedWriter nicht sofort in die zugrunde liegende Datei übertragen werden, bis der Puffer seine Kapazität erreicht.

Im gegebenen Szenario verarbeitet das Programm über 10.000 Zeilen Eingabedaten und generiert eine große Menge von SQL-Strings, die die Puffergröße überschreiten. Infolgedessen wird der Puffer voll und enthält mehrere hundert Zeilen ungeschriebener Daten.

Um dieses Problem zu beheben, ist es wichtig, den Puffer manuell zu leeren, indem Sie die Methode close() auf dem BufferedWriter aufrufen, nachdem die Schreibvorgänge abgeschlossen sind . Diese Aktion stellt sicher, dass alle verbleibenden Daten im Puffer in die Datei geschrieben werden, bevor sie geschlossen wird, wodurch das Problem des unvollständigen Schreibens behoben wird.

Der korrigierte Code unten enthält den Aufruf von 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();
        }
...

Das obige ist der detaillierte Inhalt vonWarum führt mein Java BufferedWriter zu unvollständigen Schreibvorgängen in eine Datei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn