Node.js Stream readable.unpipe() 方法

2025年2月12日 | 阅读 4 分钟

在本文中,我们将讨论 Node.js stream readable.unpipe() 方法,包括其语法、参数和几个示例。

什么是 Node.js Stream readable.unpipe() 方法?

在 Node.js 中,可以使用 readable.unpipe() 方法将可读流(readable stream)与之前使用 readable.pipe() 方法连接的目标可写流(writable stream)断开连接。该方法实质上停止了数据从源可读流到目标可写流的数据传输。

语法

它具有以下语法:

参数

destination: 此引用指示应将哪个可写流与可读流分离。如果未提供,则所有目标流都将被断开连接。

返回值

它返回 stream.Writable,即目标流。

行为

  • 如果指定了目标流,则将其从可读流的目标流列表中移除。
  • 如果未指定目标流,则通过使用 "readable.pipe()" 连接的所有目标流都将断开连接。

用例

  • 流式应用程序中的数据流是动态管理的。
  • 暂时或永久地停止数据流向特定目标。

示例 1

让我们举一个例子来说明 Node.js stream readable.unpipe() 方法。

输出

 
Unpiping one

说明

在此示例中,Node.js 代码演示了如何使用 readable.unpipe() 函数处理数据流。导入 fs 模块以生成文件流。一个名为 "input.txt" 的文件被转换为可读流,而一个名为 "output.txt" 的文件被转换为可写流。可读流和可写流使用 pipe() 函数连接,该函数允许数据从 "input.txt" 流入 "output.txt"。之后,通过立即调用 unpipe() 函数来断开读写流的连接,从而有效地停止数据流。在 unpiping 操作完成后,控制台日志语句显示 "Unpiping done"

示例 2

让我们再举一个例子来说明 Node.js stream readable.unpipe() 方法。

输出

 
Piping started. Data transfer will stop after 2 seconds.
Stop writing to the output.text.
Closing the writable stream.

说明

在此示例中,此 Node.js 程序演示了如何与文件流进行交互,其中 fs 模块用于文件流,并侧重于使用 unpipe 函数来管理文件之间的数据流。首先,导入 fs 模块。然后,从 input.text 文件创建读取流,并创建写入 output.text 文件的可写流。通过 pipe 方法将 input.text 中的所有数据定向到 output.text。使用 setTimeout 方法在两秒钟后停止数据传输。unpipe 技术通过断开读写流的连接来结束数据流。

当可写流关闭并且写入操作已停止时,程序会记录消息。它调用 "w.end()" 方法来确认所有数据都已刷新并且文件已正确关闭。

此示例演示了 Node.js 中强大的流管理,包括数据传输控制、错误处理和流关闭验证。