Heim >Java >javaLernprogramm >Warum führt mein Java BufferedWriter zu unvollständigen Schreibvorgängen in eine Datei?
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!