在Node.js中,流(Streams)是处理读写文件、网络通信等操作的一个抽象接口,主要用于处理大量数据或数据的实时处理。Node.js提供了四种基本的流类型:
-
可读流(Readable Streams) - 这种类型的流用于从一个数据源读取数据。比如从文件读取数据,或从HTTP响应读取数据。一个典型的例子是使用
fs.createReadStream()
方法从文件系统中读取数据。 -
可写流(Writable Streams) - 这种流用于向目的地写入数据。例如,向文件写入数据或向HTTP请求发送数据。使用
fs.createWriteStream()
方法将数据写入文件是一个常见的应用。 -
双工流(Duplex Streams) - 可以同时进行读写操作的流。它们在两个通道中都是独立的,可以同时读取和写入数据。一个例子是网络套接字(sockets),在同一个连接上即可接收数据也可发送数据。
-
变换流(Transform Streams) - 一种特殊类型的双工流,但它的输出是输入的变换。这意味着数据在写入后会经过某种处理,然后才能从流中读出。典型的应用是数据压缩和加密。例如,使用
zlib.createGzip()
来创建一个压缩流,它将数据压缩后再输出。
每种流都是EventEmitter
的实例,可以发射事件,比如读取流会发射data
和end
事件,写入流会发射finish
和error
事件。利用这些特性,Node.js可以高效地处理大量数据,同时保持低内存占用。
2024年8月6日 00:13 回复