⚡ 编程实验室🏗️ 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 中处理流式数据的抽象接口。当你处理大文件(如视频、日志)时,传统的一次性读取会占用大量内存,而 Stream 允许你将数据分成小块(chunks)逐块处理,显著降低内存占用。

四种基本流类型

类型说明示例
Readable可读流(数据源)fs.createReadStream
Writable可写流(数据目标)fs.createWriteStream
Transform转换流(读写兼可)zlib.createGzip
Duplex双工流(独立读写)net.Socket

创建可读流

使用 fs.createReadStream 创建文件可读流,监听 data 事件获取数据块:

const fs = require('fs');
const readStream = fs.createReadStream('large-file.txt', { encoding: 'utf8' });
readStream.on('data', (chunk) => {
  console.log('收到数据块,长度:', chunk.length);
});
readStream.on('end', () => console.log('读取完成'));

管道(pipe)操作

pipe() 是 Stream 最强大的方法,自动管理数据流和背压(backpressure):

const fs = require('fs');
const readStream = fs.createReadStream('input.txt');
const writeStream = fs.createWriteStream('output.txt');
readStream.pipe(writeStream);
writeStream.on('finish', () => console.log('复制完成'));

练习提示

尝试修改下方代码:将读取的流通过 transform 将文本转换为大写后写入文件。提示:使用 through2 或自定义 Transform 流。

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

🏆 学习排行

加载中...

📊 统计

📖 135 篇
0 完成
🔥 0