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
上面的代码生成以下结果。
管道
所有流都支持使用管道成员函数可以完成的管道操作。
此函数称为管道,因为它模拟命令行管道操作符的行为,例如cat file.txt | grep yourtest
fs
核心模块提供了用于从文件创建可读或可写流的实用程序函数。
以下代码显示如何将文件从文件系统流式传输到用户控制台。
var fs = require("fs");
// Create readable stream
var readableStream = fs.createReadStream("./a.js");
// Pipe it to stdout
readableStream.pipe(process.stdout);
你还可以使用pipe链接多个stream。
以下代码从文件创建可读取流,通过zip变换流管道,然后将其管道到可写文件流。
这将在文件系统上创建一个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基于事件。
以上内容是否对您有帮助:
更多建议: