【Node.js】stream 流模块

流是一种抽象的数据结构。从键盘输入到应用程序就是标准输入流(stdin)。应用程序把字符一个一个输出到显示器上叫做:标准输出流(stdout)。

流的特点是数据是有序的,而且必须依次读取,或者依次写入,不能像Array那样随机定位。

在 Node.js 中,流也是一个对象,我们只需要响应流的事件就可以了:data事件表示流的数据已经可以读取了,end事件表示这个流已经到末尾了,没有数据可以读取了,error事件表示出错了。

js 复制代码
const fs = require('fs');

// 打开一个流:
const rs = fs.createReadStream('./avatar/1.txt', 'utf-8');

// `data`事件可能会有多次,每次传递的`chunk`是流的一部分数据。
// rs.on('data', function (chunk) {
//   console.log('DATA:')
//   console.log(chunk);  // 我是 1.txt 里面的内容
// });

// rs.on('end', function () {
//   console.log('END');
// });

// rs.on('error', function (err) {
//   console.log('ERROR: ' + err);
// });

// 写入(覆盖写入)文件
const ws1 = fs.createWriteStream('./avatar/1.txt', 'utf-8');
ws1.write('使用Stream写入文本数据...\n');
ws1.write('END.');
ws1.end();

一个Readable流和一个Writable流串起来后,所有的数据自动从Readable流进入Writable流,这种操作叫pipe。pipe()把一个文件流和另一个文件流串起来,这样源文件的所有数据就自动写入到目标文件里了。

js 复制代码
const fs = require('fs');
// 以下操作将 1.txt 的内容写入 2.txt
const readstream = fs.createReadStream('./avatar/1.txt')
const writestream = fs.createWriteStream('./avatar/2.txt')
readstream.pipe(writestream)
相关推荐
架构技术专栏4 小时前
Agent 工具调用:从工具声明到执行反馈
前端·人工智能·后端
别动我齐刘海5 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
志尊宝6 小时前
Vue3 零基础每日笔记(071):暗黑模式与主题切换——CSS 变量 + Element Plus 暗黑方案
前端·css·笔记·vue·html·前端开发·软件开发
Flynt6 小时前
Deno 官宣一年后停更:我把它的招牌特性在 Node 26 和 Bun 里挨个找了一遍
node.js·deno·bun
刘发财6 小时前
前端如何生成10000页PDF文件?
前端·javascript·开源
A接拉起0077 小时前
2026 年 JavaScript 开发者需要了解的知识
前端·javascript·后端
_馒头7 小时前
pixiJs游戏开发实践 - 跳棋小游戏
javascript·vue.js
用户11481867894847 小时前
面试官:大屏项目里十几个模块同时渲染上万条数据,怎么做到不卡?
前端·性能优化
前端市界7 小时前
Pro React Admin: 统一工程底座,承载多种应用...
前端·github
葡萄城技术团队7 小时前
dsh-spreadjs-editor 当前支持什么:安装前需要了解的几件事
前端