Appearance
流
"流"(Stream)指的是连续的数据序列,可以是字节、字符、图像、音频或视频等各种类型的数据。数据流可以从文件、网络、内存或其他数据源中读取,也可以向文件、网络、内存或其他数据目标中写入。
在 Node.js 中,Stream 模块提供了一组丰富的 API,可以方便地进行流式数据处理,包括可读流(Readable)、可写流(Writable)、双工流(Duplex)和转换流(Transform)等。通过使用 Stream 模块,可以将大型数据流分解为较小的数据块进行处理,从而提高数据处理效率和可靠性。
特点
- 连续性:流是连续的数据序列,数据是按照一定的顺序依次传输的。
- 实时性:流数据通常是实时处理的,数据在传输过程中可能会不断产生或消耗。
- 大小可变:流数据的大小通常是可变的,数据可能会被拆分为多个块或合并为单个块。
- 可读可写:流数据既可以被读取也可以被写入,可以实现数据的双向传输。
简单案例
用流实现一个复制功能。
js
const fs = require('fs')
const path = require('path')
// 创建可读流
const readStream = fs.createReadStream(path.resolve(__dirname, 'input.txt'))
// 创建可写流
const writeStream = fs.createWriteStream(path.resolve(__dirname, 'output.txt'))
// 将可读流的数据写入可写流
readStream.pipe(writeStream)
console.log('文件复制完成')
首先使用 fs.createReadStream() 方法创建一个可读流,用于从文件 input.txt 中读取数据。
然后使用 fs.createWriteStream() 方法创建一个可写流,用于将数据写入到文件 output.txt 中。
最后,使用 pipe() 方法将可读流的数据传输到可写流中,并将数据写入到输出文件中。