什么是 Stream(流)?为什么说处理大文件必须用流?
Stream 是边读边处理的数据抽象,不用把整份数据一次性载入内存。四种类型:
Readable(可读,如文件读取)Writable(可写,如下载落盘)Duplex(双向,如 socket)Transform(转换,如压缩、加密)
大文件必须流式:一次 fs.readFile 会把整个文件读进内存,几百 MB 就容易 OOM;用流可以「边读边写」恒定内存。
// 文件复制:内存占用恒定
import { createReadStream, createWriteStream } from 'fs'
createReadStream('big.iso')
.pipe(createWriteStream('copy.iso'))
.on('finish', () => console.log('done'))常用 pipe 串联多个流;pipeline(来自 stream/promises)更优雅,自动处理错误与清理。