⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Node.js Stream 流:高效处理大数据

学习如何使用 Node.js 的 Stream 接口以流式方式处理大文件与数据管道。 · 难度:入门 · +15XP

什么是 Stream?

Stream(流)是 Node.js 中处理 I/O 数据的一种抽象接口。与一次性加载整个文件到内存不同,Stream 允许你将数据分成小块(chunk)逐步处理,极大提升内存效率与性能。

四种基本流类型

类型说明
Readable可读流(如 fs.createReadStream)
Writable可写流(如 fs.createWriteStream)
Transform转换流(读写同时可修改数据,如 zlib.createGzip)
Duplex双工流(既可读又可写,如 net.Socket)

读取文件流示例

const fs = require('fs');

const readStream = fs.createReadStream('input.txt', { encoding: 'utf8' });

readStream.on('data', (chunk) => { console.log('接收到一块数据,长度:', chunk.length); });

readStream.on('end', () => { console.log('读取完成'); });

readStream.on('error', (err) => { console.error('发生错误:', err); });

管道操作

使用 pipe() 方法可以将一个可读流直接导向一个可写流,实现自动背压(backpressure)控制。

const fs = require('fs');

const readStream = fs.createReadStream('source.txt'); const writeStream = fs.createWriteStream('destination.txt');

readStream.pipe(writeStream);

writeStream.on('finish', () => { console.log('文件复制完成'); });

练习提示

尝试修改右侧代码,使用 fs.createReadStream 读取一个较大文件(如 100MB),观察内存占用。对比 fs.readFile 一次性读取时的内存差异。可以将 chunk 累加并打印总长度。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 135 篇
0 完成
🔥 0