Stream在node.js中是一個(gè)抽象的接口,基于EventEmitter,也是一種Buffer的高級(jí)封裝,用來(lái)處理流數(shù)據(jù)。流模塊便是提供各種API讓我們可以很簡(jiǎn)單的使用Stream。
流分為四種類(lèi)型,如下所示:

  • Readable,可讀流

  • Writable,可寫(xiě)流

  • Duplex,讀寫(xiě)流

  • Transform,擴(kuò)展的Duplex,可修改寫(xiě)入的數(shù)據(jù)

1、Readable可讀流

通過(guò)stream.Readable可創(chuàng)建一個(gè)可讀流,它有兩種模式:暫停和流動(dòng)。
在流動(dòng)模式下,將自動(dòng)從下游系統(tǒng)讀取數(shù)據(jù)并使用data事件輸出;暫停模式下,必須顯示調(diào)用stream.read()方法讀取數(shù)據(jù),并觸發(fā)data事件。
所有的可讀流最開(kāi)始都是暫停模式,可以通過(guò)以下方法切換到流動(dòng)模式:

  • 監(jiān)聽(tīng)'data'事件

  • 調(diào)用stream.resume()方法

  • 調(diào)用stream.pipe()方法將數(shù)據(jù)輸出到一個(gè)可寫(xiě)流Writable

同樣地,也可以切換到暫停模式,有兩種方法: