Node有哪些常用 Stream流?分别什么时候使用?
参考答案:
Node.js 中的 Stream(流)是一个抽象接口,许多对象都实现了这个接口。Stream 提供了四种流类型,分别是:
-
Readable Stream(可读流):用于从数据源读取数据。例如,当你需要从文件或网络连接中读取数据时,可以使用可读流。常见的可读流有:
fs.ReadStream
:用于读取文件。http.IncomingMessage
:用于读取 HTTP 响应。zlib.createReadStream
:用于读取压缩文件。
-
Writable Stream(可写流):用于将数据写入目标。例如,当你需要将数据写入文件或网络连接时,可以使用可写流。常见的可写流有:
fs.WriteStream
:用于写入文件。http.ClientRequest
:用于写入 HTTP 请求。zlib.createWriteStream
:用于写入压缩文件。
-
Duplex Stream(双向流):同时具有可读和可写的能力。例如,
net.Socket
和fs.ReadStream
(在某些情况下)都是双向流。 -
Transform Stream(转换流):操作被写入的数据,然后读出结果。转换流是一个特殊的双向流,它在写入和读取之间进行了某种形式的转换。例如,
zlib.createDeflate
和zlib.createInflate
就是转换流,它们用于数据的压缩和解压缩。
在选择使用哪种流时,主要取决于你的需求。如果你需要从数据源读取数据,那么使用可读流;如果你需要将数据写入目标,那么使用可写流;如果你需要同时进行读写操作,那么使用双向流;如果你需要对数据进行某种转换,那么使用转换流。