Node.js 流(Stream)
-
流
流是使您可以连续地从源读取数据或将数据写入目标的对象。在Node.js中,有四种类型的流-- 可读 -用于读取操作的流。
- 可写 -用于写操作的流。
- 双工 -可用于读取和写入操作的流。
- 转换 -一种双工流,其中基于输入计算输出。
每种类型的Stream都是一个EventEmitter实例,并在不同的时间实例抛出多个事件。例如,一些常用事件是-- data - 当有可读取的数据时,将触发此事件。
- end - 当没有更多的数据读取此事件被触发。
- error - 接收或写入数据时发生错误时将触发此事件。
- finish - 当所有的数据已刷新到底层系统,此事件被触发。
本教程提供了对Streams上常用操作的基本了解。 -
从流中读取
创建一个名为input.txt的文本文件,其内容如下:使用以下代码创建一个名为main.js的js文件-现在运行main.js以查看结果-验证输出。 -
写入流
使用以下代码创建一个名为main.js的js文件-现在运行main.js以查看结果-验证输出。 -
管道流
管道是一种机制,其中我们将一个流的输出作为另一流的输入。它通常用于从一个流中获取数据并将该流的输出传递到另一流。管道操作没有限制。现在,我们将展示一个管道示例,该示例用于读取一个文件并将其写入另一个文件。使用以下代码创建一个名为main.js的js文件-现在运行main.js以查看结果-验证输出。打开在当前目录中创建的output.txt;它应包含以下内容(您的input中是什么内容,output中就是什么内容)- -
连接流
链接是一种将一个流的输出连接到另一流并创建多个流操作的链的机制。通常用于管道操作。现在,我们将使用管道和链接来首先压缩文件,然后将其解压缩。使用以下代码创建一个名为main.js的js文件-现在运行main.js以查看结果-验证输出。您会发现input.txt已被压缩,并在当前目录中创建了文件input.txt.gz。现在让我们尝试使用以下代码解压缩同一文件-现在运行main.js以查看结果-验证输出。