ホームページ >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 出力が意図したすべての書き込みを完全に失敗するという問題が発生しました。テキストを出力ファイル 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。