1. 程式人生 > >[轉]為什麼IO流中需要flush,如何理解它?

[轉]為什麼IO流中需要flush,如何理解它?

flush本意是沖刷,這個方法大概取自它引申義衝馬桶的意思,馬桶有個池子,你往裡面扔東西,會暫時儲存在池子裡,只有你放水衝下去,東西才會進入下水道。 同理很多流都有一個這樣的池子,專業術語叫緩衝區,當你print或者write的時候,會暫時儲存在緩衝區,並沒有傳送出去,這是出於效率考慮的,因為資料不會自己傳送過去,必須有其他機制,而且這個很消耗資源,就像馬桶你需要很多水,才能沖走,你如果扔一點東西,就衝一次水,那你水費要爆表了,同樣如果你寫一行文字,或者一個位元組,就要馬上傳送出去,那網路流量,CPU使用率等等都要爆表了,所以一般只有在你真正需要傳送否則無法繼續的時候,呼叫flush,將資料傳送出去。