首頁 >Java >java教程 >為什麼我的 Java BufferedWriter 導致檔案寫入不完整?

為什麼我的 Java BufferedWriter 導致檔案寫入不完整?

Patricia Arquette
Patricia Arquette原創
2024-12-31 13:58:10617瀏覽

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

BufferedWriter 寫入不完整問題

在提供的Java 程式中,程式碼遇到BufferedWriter out 未能完全寫入所有預期內容的問題文字到輸出檔nyccrash.sql。這會導致 SQL 語句不完整,且輸出中缺少資料。

寫入不完整的原因是由於 BufferedWriter 的預設緩衝區大小設定為 8192 個字元。這意味著,在緩衝區達到其容量之前,對 BufferedWriter 的寫入操作不會立即刷新到底層檔案。

在給定場景中,程式處理超過 10,000 行輸入數據,產生大量數據超過緩衝區大小的 SQL 字串。因此,緩衝區已滿並保存了數百行未寫入的資料。

要解決此問題,至關重要的是在寫入操作完成後透過呼叫 BufferedWriter 上的 close() 方法來手動刷新緩衝區。此操作可確保緩衝區中的所有剩餘資料在關閉之前寫入文件,從而解決寫入不完整的問題。

下面更正的程式碼包括 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();
        }
...

以上是為什麼我的 Java BufferedWriter 導致檔案寫入不完整?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn