Node.js 的流(Stream)是处理数据流的核心特性,广泛应用于文件读写、网络通信和实时数据处理场景。以下是流的基础知识与使用指南:
流的核心概念
- 流是什么:流是一种异步处理数据的方式,允许分块读取或写入数据,避免一次性加载大文件或数据导致内存溢出
- 流的优势:支持内存高效处理、可取消操作、可管道传输(pipe)数据
- 典型场景:
- 实时视频/音频传输
- 大文件复制(如
cp bigfile.txt /path
) - 数据压缩/加密处理
流的类型
Node.js 流分为四大类:
- Readable Stream 📡
- 用于读取数据(如
fs.createReadStream
) - 示例:读取大文件时无需加载全部内容
const fs = require('fs'); const readable = fs.createReadStream('largefile.txt');
- 用于读取数据(如
- Writable Stream 📝
- 用于写入数据(如
fs.createWriteStream
) - 示例:将数据分块写入网络请求
const writable = fs.createWriteStream('output.txt');
- 用于写入数据(如
- Duplex Stream 🔁
- 同时支持读写(如
net.createConnection
)
- 同时支持读写(如
- Transform Stream 🔁📦
- 可对数据进行转换(如
zlib.createGzip
)
- 可对数据进行转换(如
实用技巧
- 管道操作:通过
.pipe()
实现流式传输readable.pipe(writable);
- 事件监听:
data
(数据分块)end
(数据传输完成)error
(异常处理)
- 控制流速:使用
highWaterMark
设置缓冲区大小
扩展阅读
如需深入了解 Node.js 流的高级用法,可访问 Node.js 流指南 获取更多示例与最佳实践 🚀