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

Node.js 中的 Stream(流)是一种抽象的数据接口,用于在 Node.js 中处理流动的数据。它们是可读、可写或可读写的,可以在处理大量数据或需要逐步处理数据时使用。Node.js 有四种基本的流类型:

  1. Readable(可读流):可读流是对提供数据的源头(source)的抽象。例如,fs.createReadStream() 创建的就是一个可读流,用于从文件读取数据。当你需要从一个数据源(如文件、数据库等)读取数据时,就可以使用可读流。
  2. Writable(可写流):可写流是对数据写入目标(destination)的抽象。例如,fs.createWriteStream() 创建的就是一个可写流,用于将数据写入文件。当你需要将数据写入一个目标(如文件、网络socket等)时,就可以使用可写流。
  3. Duplex(双工流):双工流同时实现了可读和可写接口。它的实例包括 tcp sockets、zlib 转换流等。当你需要同时进行读写操作,例如在网络通信中,可以使用双工流。
  4. Transform(转换流):转换流是双工流的一种特殊类型,它可以在写入和读取过程中修改和变换数据。例如,zlib.createDeflate() 创建的就是一个转换流,用于数据压缩。当你需要在读写数据的过程中对数据进行某种处理(如压缩、解密、转换格式等)时,就可以使用转换流。

使用流的好处主要在于,对于大量的数据,无需一次性加载到内存中,可以边读取边处理,大大提高了处理效率,降低了内存的消耗。在处理文件、网络请求等 IO 操作时,流是非常有用的工具。

发表评论

后才能评论