Java IOは大きな知識のポイントです。
知識ポイントを分解してそれについて話すと、おそらく1週間かかるでしょう。 IOシステムについては、次の写真を見ることができます。
次に、コードから始めましょう。次のコードを見てみましょう
public class test {public static void main(string [] args)throws exception {file file = new file( "text.txt"); if(!file.exists()){file.createNewFile(); } fileoutputStream fos = new fileoutputStream(file); BufferedOutputStream bos = new BufferedOutputStream(FOS); byte [] b = new byte [1024]; bos.write(b); bos.flush(); }}バッファーされたストリームがコードに構築され、その後、KB長データがストリームに書き込まれ、最後にFlush()メソッドが呼び出されます。
これは非常にシンプルなコードであり、最終出力は1kb Text.textファイルを生成することです。
しかし、最後の行をコメントすると
//bos.flush();
最終的に生成されたtext.textサイズは0になります。
この結果は非常に明白ですが、flush()をclose()に変更すると、結果はまだ0になりますか?
フラッシュについて
flush()は、実際にはずっと前にネットワークトランスミッションで見つかります
当時、効率のために、サーバーとクライアントは生成されるたびにデータを送信しませんでした。
代わりに、バッファが作成され、バッファがいっぱいになった後にデータがクライアントに転送されます。
時々そのような問題があります。データを埋めるのに十分ではない場合、データをクライアントに送信する必要がある場合、この問題を解決するために、フラッシュの概念があり、バッファデータの送信を余儀なくされます。
上記の質問に戻ると、フラッシュを近くに置き換えることは可能ですか
答えはイエスです。
ソースコードを見ると、BufferedOutputStreamの継承関係がわかります
Public Class BufferOutputStreamは、FilterOutputStreamを拡張します
BufferedOutputStreamはclose()メソッドを実装しないため、filteroutputStreamのclose()を直接呼び出し、filteroutputStreamのclose()メソッドはflush()を呼び出してバッファーデータを出力します。
実際の開発では、IO操作に関して、最終的に閉じる()メソッドを呼び出す必要があることが強調されています。上記の例は理由の1つです。