跳到主要内容

Node有哪些常用 Stream流?分别什么时候使用?

参考答案:

Node.js 中的 Stream(流)是一个抽象接口,许多对象都实现了这个接口。Stream 提供了四种流类型,分别是:

  1. Readable Stream(可读流):用于从数据源读取数据。例如,当你需要从文件或网络连接中读取数据时,可以使用可读流。常见的可读流有:

    • fs.ReadStream:用于读取文件。
    • http.IncomingMessage:用于读取 HTTP 响应。
    • zlib.createReadStream:用于读取压缩文件。
  2. Writable Stream(可写流):用于将数据写入目标。例如,当你需要将数据写入文件或网络连接时,可以使用可写流。常见的可写流有:

    • fs.WriteStream:用于写入文件。
    • http.ClientRequest:用于写入 HTTP 请求。
    • zlib.createWriteStream:用于写入压缩文件。
  3. Duplex Stream(双向流):同时具有可读和可写的能力。例如,net.Socketfs.ReadStream(在某些情况下)都是双向流。

  4. Transform Stream(转换流):操作被写入的数据,然后读出结果。转换流是一个特殊的双向流,它在写入和读取之间进行了某种形式的转换。例如,zlib.createDeflatezlib.createInflate 就是转换流,它们用于数据的压缩和解压缩。

在选择使用哪种流时,主要取决于你的需求。如果你需要从数据源读取数据,那么使用可读流;如果你需要将数据写入目标,那么使用可写流;如果你需要同时进行读写操作,那么使用双向流;如果你需要对数据进行某种转换,那么使用转换流。