Node.js Stream(流)

2018-02-16 18:19 更新

Node.js中的streams基于事件。

所有這些stream類都繼承自基本抽象Stream類,它繼承自EventEmitter。

var stream = require("stream"); 
var EventEmitter = require("events").EventEmitter; 

console.log(new stream.Stream() instanceof EventEmitter); // true 
console.log(new stream.Readable({}) instanceof stream.Stream); // true 
console.log(new stream.Writable({}) instanceof stream.Stream); // true 
console.log(new stream.Duplex({}) instanceof stream.Stream); // true 
console.log(new stream.Transform({}) instanceof stream.Stream); // true 

上面的代碼生成以下結(jié)果。

stream類

管道

所有流都支持使用管道成員函數(shù)可以完成的管道操作。

此函數(shù)稱為管道,因為它模擬命令行管道操作符的行為,例如cat file.txt | grep yourtest

fs 核心模塊提供了用于從文件創(chuàng)建可讀或可寫流的實用程序函數(shù)。

以下代碼顯示如何將文件從文件系統(tǒng)流式傳輸?shù)接脩艨刂婆_。

var fs = require("fs"); 
// Create readable stream 
var readableStream = fs.createReadStream("./a.js"); 
// Pipe it to stdout 
readableStream.pipe(process.stdout); 

你還可以使用pipe鏈接多個stream。

以下代碼從文件創(chuàng)建可讀取流,通過zip變換流管道,然后將其管道到可寫文件流。

這將在文件系統(tǒng)上創(chuàng)建一個zip文件。

var fs = require("fs"); 
var gzip = require("zlib").createGzip(); 

var inp = fs.createReadStream("a.js"); 
var out = fs.createWriteStream("a.js.gz"); 

// Pipe chain 
inp.pipe(gzip).pipe(out); 

Node.js中的steams基于事件。



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號