本文先从一个 Stream 的基本示例开始,有个初步认识,中间会讲在 Stream 中什么时候会出现内存泄漏,及如何避免最后基于 Nodejs 中的 Stream 实现一个多文件合并为一个文件的例子。
一个简单的 Stream 操作
创建一个可读流 readable 一个可写流 writeable,通过管道 pipe 将可写流绑定到可读流,一个简单的 Stream 操作就完成了。
const fs = require('fs');
const readable = fs.createReadStream('./test1.txt');
const writeable = fs.createWriteStream('./test2.txt');
readable.pipe(writeable);
看下 pipe 这个方法两个参数:
- destination:是一个可写流对象,也就是一个数据写入的目标对象,例如,上面我们创建的 writeable 就是一个可写流对象
- options:end:读取结束时终止写入流,默认值是 true
readable.pipe(destination[, options])
默认情况下我们是不需要手动调用写入流的 end 方法关闭的。
现在我们改一下,设置 end 为 false 写入的目标流将会一直处于打开状态, 此时就需要监听可读流的 end 事件,结束之后手动调用可写流的 end 事件。
// readable.pipe(writeable);
readable.pipe(writeable, {
end: false,
});
readable.on('end', function() {
writeable.end('结束');
});
还需要注意一点如果可读流期间发生什么错误,

本文介绍了Node.js中基于Stream的基础操作,包括可读流与可写流的连接,如何避免内存泄漏,以及如何利用Stream将多个文件合并成一个文件。重点强调了在处理Stream时监听错误事件和手动关闭流的重要性。
最低0.47元/天 解锁文章
6407

被折叠的 条评论
为什么被折叠?



