關於Java中的流,我談談自己的理解。
說到流,第一個想到的名詞就是【水流】,開啟水龍頭,自來水就從管道里面流出來了,可能是來自附近的自來水公司,流到洗手池裡面。
我們要下載一個電影,開啟下載軟體,資料(流)就會從網線裡面流出來,可能會來著地球上某個角落的一臺伺服器,流到我們電腦的磁碟上。
流的本質是資料傳輸,是一組有順序的,有起點和終點的位元組集合;在上面那個例子中,這些字元,透過播放器解析、播放,就是一部電影。
按照方向劃分,可以分成輸入流和輸出流。
按照資料單位劃分,可以分成位元組流(1byte=8bit)和字元流(1char=2byte=16bit)。
按照功能劃分,可以分成節點流和處理流。節點流是可以從一個數據源(檔案,記憶體等)讀寫資料的流。處理流是在已經存在的流(節點流或處理流)之上,提供更為強大的讀寫功能。用一個水管接到水龍頭上,開始放水,這就是節點流;如果在外面再套一個管子,它可以在夜裡發光,這個就是處理流;還能在外面再套一個更粗的管子,它的功能是播放音樂,這個也是處理流。
一張圖,就能解釋的清清楚楚:
關於Java中的流,我談談自己的理解。
什麼是流說到流,第一個想到的名詞就是【水流】,開啟水龍頭,自來水就從管道里面流出來了,可能是來自附近的自來水公司,流到洗手池裡面。
我們要下載一個電影,開啟下載軟體,資料(流)就會從網線裡面流出來,可能會來著地球上某個角落的一臺伺服器,流到我們電腦的磁碟上。
流的本質是資料傳輸,是一組有順序的,有起點和終點的位元組集合;在上面那個例子中,這些字元,透過播放器解析、播放,就是一部電影。
流的分類按照方向劃分,可以分成輸入流和輸出流。
按照資料單位劃分,可以分成位元組流(1byte=8bit)和字元流(1char=2byte=16bit)。
按照功能劃分,可以分成節點流和處理流。節點流是可以從一個數據源(檔案,記憶體等)讀寫資料的流。處理流是在已經存在的流(節點流或處理流)之上,提供更為強大的讀寫功能。用一個水管接到水龍頭上,開始放水,這就是節點流;如果在外面再套一個管子,它可以在夜裡發光,這個就是處理流;還能在外面再套一個更粗的管子,它的功能是播放音樂,這個也是處理流。
Java中的流一張圖,就能解釋的清清楚楚: