管道流
可讀流可以管道或連線到可寫流。這使得資料從源流流向目標流而不需要太多努力。
var fs = require('fs')
var readable = fs.createReadStream('file1.txt')
var writable = fs.createWriteStream('file2.txt')
readable.pipe(writable) // returns writable
當可寫流也是可讀流時,即當它們是雙工流時,你可以繼續將其傳輸到其他可寫流。
var zlib = require('zlib')
fs.createReadStream('style.css')
.pipe(zlib.createGzip()) // The returned object, zlib.Gzip, is a duplex stream.
.pipe(fs.createWriteStream('style.css.gz')
可讀流也可以通過管道傳輸到多個流中。
var readable = fs.createReadStream('source.css')
readable.pipe(zlib.createGzip()).pipe(fs.createWriteStream('output.css.gz'))
readable.pipe(fs.createWriteStream('output.css')
請注意,必須在任何資料流動之前同步(同時)管道輸出流。如果不這樣做,可能會導致資料流不完整。
另請注意,流物件可以發出 error
事件; 請務必根據需要在每個流上負責任地處理這些事件 :
var readable = fs.createReadStream('file3.txt')
var writable = fs.createWriteStream('file4.txt')
readable.pipe(writable)
readable.on('error', console.error)
writable.on('error', console.error)