回答:
以下からのドキュメントのflush
方法:
出力ストリームをフラッシュし、バッファリングされたすべての出力バイトを強制的に書き出します。flushの一般的な規約は、それを呼び出すことは、以前に書き込まれたバイトが出力ストリームの実装によってバッファリングされている場合、そのようなバイトが目的の宛先にすぐに書き込まれる必要があることを示すということです。
バッファリングは主にI / Oパフォーマンスを向上させるために行われます。詳細については、この記事「Tuning Java I / O Performance」を参照してください。
コマンドを与えると、そのコマンドのストリームは、コンピュータのバッファ(一時的なメモリの場所)と呼ばれるメモリの場所に格納されます。すべての一時メモリの場所がいっぱいになったら、flush()を使用します。これは、データのすべてのストリームをフラッシュして完全に実行し、バッファの一時的な場所にある新しいストリームに新しいスペースを割り当てます。-理解してほしい
BufferedOutputStream
、BufferedWriter
、ObjectOutputStream,
およびPrintXXX
クラス。flush()
他のストリームのメソッド、またはWriter
何もしません。
flush()
に対して明示的に呼び出す必要はありません。フラッシュ自体を実行します。BufferedWriter
close()
close()
close()
呼び出しflush()
に注意してくださいFileWriter
。バッファなしで使用する場合、両方を呼び出すことは冗長です。
ストリームにデータを書き込んでも、すぐには書き込まれず、バッファリングされます。したがってflush()
、バッファからのすべてのデータが確実に書き込まれるようにする必要がある場合に使用します。
ストリームを閉じる前にすべての書き込みが完了していることを確認する必要があります。そのためflush()
、ファイル/バッファ付きライターでが呼び出されますclose()
。
ただし、ストリームを閉じる前にすべての書き込みを保存する必要がある場合は、を使用してくださいflush()
。
FilterOutputStream
およびのJavadocによって保証されていFilterWriter
ます。
バッファがいっぱいの場合、バッファされているすべての文字列はディスクに保存されます。バッファーは、ビッグディールを回避するために使用されます。とオーバーヘッド。
java libsに配置されたBufferedWriterクラスには、次のような1行があります。
private static int defaultCharBufferSize = 8192;
バッファがいっぱいになる前にデータを送信したい場合は、制御できます。ちょうどそれをフラッシュします。writer.flush()の呼び出しは、次のように言います。
参考書:https : //www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208
ページ数:453
ストリームは、コンテンツを定期的に空にし、画面に表示したり、ソケットに送信したり、ファイルに書き込んだりするスレッドによってアクセスされることがよくあります。これは、パフォーマンス上の理由で行われます。出力ストリームをフラッシュするとは、停止して、ストリームのコンテンツが宛先に完全に転送されるのを待ってから、ストリームを空にしてコンテンツを送信して実行を再開することを意味します。