flush()意思是把緩衝區的內容強制的寫出。 因為作業系統的某些機制,為了防止一直不停地磁碟讀寫,所以有了延遲寫入的概念,(注意不要和frush()重新整理混淆了)
主要用在IO中,即清空緩衝區資料,一般在讀寫流(stream)的時候,資料是先被讀到了記憶體中,再把資料寫到檔案中,當你資料讀完的時候不代表你的資料已經寫完了,因為還有一部分有可能會留在記憶體這個緩衝區中。這時候如果你呼叫了close()方法關閉了讀寫流,那麼這部分資料就會丟失,所以應該在關閉讀寫流之前先flush()。。
在網路web伺服器上也是,為了防止寫一個位元組就傳送一個訊息,所以有緩衝區的概念,比如64K的記憶體區域,緩衝區寫滿了再一次性寫入磁碟之中(或者傳送給客戶端瀏覽器)。
flush方法一般是程式寫入完成時執行。隨後跟著close方法。例如:
// 取得輸出流。當然,看具體環境。
PrintWriter out = Util.getWriter();
out.println("輸出一些資訊,可能很多");
out.flush();
out.close();
flush()意思是把緩衝區的內容強制的寫出。 因為作業系統的某些機制,為了防止一直不停地磁碟讀寫,所以有了延遲寫入的概念,(注意不要和frush()重新整理混淆了)
主要用在IO中,即清空緩衝區資料,一般在讀寫流(stream)的時候,資料是先被讀到了記憶體中,再把資料寫到檔案中,當你資料讀完的時候不代表你的資料已經寫完了,因為還有一部分有可能會留在記憶體這個緩衝區中。這時候如果你呼叫了close()方法關閉了讀寫流,那麼這部分資料就會丟失,所以應該在關閉讀寫流之前先flush()。。
在網路web伺服器上也是,為了防止寫一個位元組就傳送一個訊息,所以有緩衝區的概念,比如64K的記憶體區域,緩衝區寫滿了再一次性寫入磁碟之中(或者傳送給客戶端瀏覽器)。
flush方法一般是程式寫入完成時執行。隨後跟著close方法。例如:
// 取得輸出流。當然,看具體環境。
PrintWriter out = Util.getWriter();
out.println("輸出一些資訊,可能很多");
out.flush();
out.close();