ホームページ > Java > &#&チュートリアル > BufferedWriter がすべてのデータを出力ファイルにフラッシュしないのはなぜですか?

BufferedWriter がすべてのデータを出力ファイルにフラッシュしないのはなぜですか?

Patricia Arquette
リリース: 2024-12-18 00:46:10
オリジナル
149 人が閲覧しました

Why Isn't My BufferedWriter Flushing All Data to the Output File?

BufferedWriter がデータを出力ファイルにフラッシュしない

問題:

Java プログラムが CSV データを SQL コマンドに変換しようとしました出力ファイルに問題が発生しています。 BufferedWriter に書き込まれたすべてのデータが出力ファイルに表示されるわけではありません。

詳細:

プログラムは 10,000 行を超える CSV ファイルを読み取り、SQL ステートメントを生成して、データをテーブルに取り込みます。ただし、出力ファイルは途中で切り詰められ、最後の不完全なステートメントの値の一部が欠落しています。

コード:

// ...
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);
}
// ...
ログイン後にコピー

解決策:

この問題は、書き込みプロセス中に出力バッファがフラッシュされないために発生します。 BufferedWriter のデフォルトのバッファ サイズは 8192 文字で、複数行を保持するには十分です。バッファーがいっぱいになると、バッファーが手動でフラッシュされるまでデータはファイルに書き込まれません。

すべてのデータが出力ファイルに確実に書き込まれるようにするには、OutputStream を明示的に閉じる必要があります。これにより、残っているデータはフラッシュされます。バッファ内のデータ:

out.close();
ログイン後にコピー

出力ストリームを閉じると、部分的なステートメントを含むすべてのデータがプログラムの前にファイルにフラッシュされることが保証されます。終了します。

以上がBufferedWriter がすべてのデータを出力ファイルにフラッシュしないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート