CNode

stream的一个问题

问答
Wwtcsy发布于11 年前最后回复11 年前2 回复4802 浏览0 收藏

开始学流 看说明说用pipe 接收一个可读流src并将其数据输出到可写流dst src.pipe(dst) 然后看到说 pipe(dst)方法为返回dst流,这样就可以接连使用多个.pipe() 于是我想写个例子验证下

var fs = require("fs"); var readerStream = fs.createReadStream("1.txt"); var writerStream = fs.createWriteStream("2.txt"); var writerStream3 = fs.createWriteStream("3.txt"); readerStream .pipe(writerStream) .pipe(writerStream3);

其中1.txt是存在的,运行完之后报告错误了 但是还是生成了2.txt ,3.txt 报错的内容是 (不知道为啥错!)

D:\node\stream>node 1.js

events.js:72 throw er; // Unhandled 'error' event ^ Error: Cannot pipe. Not readable. at WriteStream.Writable.pipe (_stream_writable.js:127:22) at Object. (D:\node\stream\1.js:7:3) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:906:3

查看回复

回复 (2)

K
klesh#1·11 年前

那得流是双向的才行, 比如

readStream.pipe(gzip).pipe(writeStream);

readStream/writeStream 显然都是单向的,这种情况应该是要用:

readStream.pipe(writeStream);
readStream.pipe(writeStream3);
W
wtcsy#2·11 年前

额 原来还有单向流和双向流 学习了!

参与回复
登录后即可参与回复。登录