out.flush()

Java出力ストリームフラッシュ()メソッド

Java開発では、我々は時々流れを操作し、それはしばしば、このようなコードが発生する可能性があります

out.flush();
out.close();
時々 、私たちはそれらについて読んで、物事の原理は、ここについて理解することですどこか分からない:
フラッシュ()関数は、バッファを空にするために、意味を空にするデータフロー、データのオペレーティング・フローは、メモリに読み込まれますが、データを読み終えたときに、我々は、ストリームを閉じるためにclose()メソッドを呼び出した場合、その後、読み取りと書き込み、その後、ファイルにデータを書き込むべきながらそれはデータの損失につながることができるとき、データの読み出しへのデータ書き込みが完了したことを表すものではありませんが完了したので、なぜ、データの一部がキャッシュ領域に残ることがあり、これを理解するために、我々は例を与えます:

例えば、農村部では、ほぼすべての家族がポンプ、ポンプの役割は何かを持っている、それは水がタンク内のポンプでもある、そして我々は水道管がバッファのようなものです(水ポンプとタンクの接続を使用します私たちは、タンク内のすべての水の井戸を取得できるようにしたいとき)、私たちは水の井戸だけで吸っていることを見つけるならば、我々はその後、ポンプは、ポンプを停止し、これをオフに切り替えるだろう、ポンプ圧送作業をしましょうパイプは、水の一部がポンプされるままになりますときにデータを読み込み、データを書き込む水槽で、パイプがバッファとして動作する、私は、これはそれの具体化ではないかわかりません

したがって、この方法では、我々はclose()メソッドを呼び出して途中であれば、出力データ領域は、水のバットのように、まだですが、バッファの左部分には、その後、我々は最初のフラッシュ()メソッドを呼び出した場合、それは意志必須のデータ出力は、バッファを空にし、最終的に完成された()クローズストリームリーダ通話を終了します。

オリジナルます。https://blog.csdn.net/lsx991947534/article/details/45065773

書き込みフラッシュjavaの後、write()メソッド()アクション

。これは、バッファの問題であり、
流れの使用でJava、バッファが存在します、一種類に応じて、データを送信するために、より効率的な方法であると考えられて:バッファにデータを送信する最初の、バッファが後で再び埋め過去に髪のではなく、個別に何度も何度も作りました。
フラッシュは()あなたは、バッファがいっぱいになるまで待つ必要はありません、アウト・バッファにデータを送信することは必須表します。

だから、時間の流れが、この方法ではない場合、多くの場合、(フラッシュがあるでしょう)ストリームの他の側面は、特に、特に小さなデータで、データの問題を読み取ることができません。

 

 

java.io.OutputStream.flush()メソッドは、この出力ストリームをフラッシュし、書き込むべき任意のバッファされた出力バイトを強制します。一般的な契約リフレッシュがそれを呼び出すと、任意のバイトバッファリングされた出力ストリームを書き込む前に達成した場合、このようなバイトがすぐに目的地に書かれるべき兆候であるということです。

  このフローの目標は、オペレーティング・システムを記述するために、直前に書かれた抽象的なストリームを保証するためにバイトストリームを更新し、ファイルなど、基礎となるオペレーティング・システムによって期待されている。それは彼らが実際に書き込まれていることを保証するものではありません。そのようなディスクドライブのOutputStreamフラッシュ法等の物理デバイスは、任意の動作を行いません。

オリジナルます。https://blog.csdn.net/AnneQiQi/article/details/51295218

おすすめ

転載: www.cnblogs.com/aaronRhythm/p/11121233.html