codecamp

Node.js Stream(流)

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 

上面的代码生成以下结果。

stream类

管道

所有流都支持使用管道成员函数可以完成的管道操作。

此函数称为管道,因为它模拟命令行管道操作符的行为,例如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基于事件。



Node.js 事件处理程序
Node.js 可读/可写流
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }