天天看點

網絡程式設計(part4)--重新整理緩沖區

鄙人學習筆記

文章目錄

  • ​​重新整理緩沖區​​
  • ​​舉個例子1(行緩沖)​​
  • ​​舉個例子2(隻有把系統預設緩沖區大小寫滿,才會自動重新整理)​​
  • ​​舉個例子3(flush()重新整理緩沖區)​​

重新整理緩沖區

  • 緩沖區重新整理函數
flush()      

該函數被調用後,會進行一次磁盤互動,将緩沖區中的内容寫入到磁盤。

我們用下面的個例子,具體學習一下行緩沖和緩沖區函數的用法及作用。

舉個例子1(行緩沖)

輸入以下代碼:

網絡程式設計(part4)--重新整理緩沖區

在控制台輸入:

網絡程式設計(part4)--重新整理緩沖區

我們看一下,我們寫入的檔案test:

網絡程式設計(part4)--重新整理緩沖區

你沒看錯!是空的~

現在我們更改一下代碼:

網絡程式設計(part4)--重新整理緩沖區

在控制台輸入:

網絡程式設計(part4)--重新整理緩沖區

我們再看一下,我們寫入的檔案test:

網絡程式設計(part4)--重新整理緩沖區

以上結果論證了我們的理論:行緩沖在遇到換行符時,才會與磁盤進行互動。即在行緩沖模式下,資料從緩沖區寫入磁盤的條件是:遇到換行符。

舉個例子2(隻有把系統預設緩沖區大小寫滿,才會自動重新整理)

輸入以下代碼:

網絡程式設計(part4)--重新整理緩沖區

在控制台輸入:

網絡程式設計(part4)--重新整理緩沖區

看一下檔案test:

網絡程式設計(part4)--重新整理緩沖區

空的~~因為就這麼幾個位元組,是不會把系統預設緩沖區寫滿的,我們退出循環,close一下檔案對象,重新整理一下緩沖區:

網絡程式設計(part4)--重新整理緩沖區

看一下檔案test:

網絡程式設計(part4)--重新整理緩沖區

有資料啦~

那麼有沒有不用關閉檔案,就可以立即重新整理緩沖區的方法呢?有的呢,用flush函數就可以了!請看下面的例子。

舉個例子3(flush()重新整理緩沖區)

輸入以下代碼:

網絡程式設計(part4)--重新整理緩沖區

在控制台輸入:

網絡程式設計(part4)--重新整理緩沖區