Nodejs的Stream(流)
Stream是一个抽象接口,该抽象接口是可读、可写或是既可读又可写的,通过这些接口,我们可以和磁盘文件、套接字、HTTP请求来交互,实现数据从一个地方流动到另一个地方的功能。
所有的Stream对象都是EventEmitter的实例,常用的事件有四个:
- data-当有数据可读时触发
- end-当没有数据可读时触发
- error-在接受和写入过程中发生错误时触发
- finish-当所有的数据已经写入到底层系统时触
一、从流中读取数据
在input.txt中写入内容:www.hhhqzh.com
创建一个readStream.js文件,写入以下代码:
在终端运行该代码可以得到如下执行结果:
二、写入流
把数据写入到output.txt中
创建一个writerStream.js文件,写入以下代码:
在终端执行该代码得到以下结果,该代码会把data数据写入到output.txt文件中:
三、管道流
通过以下代码,读取一个文件的内容并写入到另一个文件中:
执行该代码后我们可以发现已经把input.txt的内容写入到了output.txt中。
四、链式流
链式是通过连接输出流到另外一个流并创建多个对个流操作链的机制。链式流一般用于管道操作。
接下来我们就是用管道和链式来压缩和解压文件。
执行完该代码可以发现在目录下创建了一个input.txt.gz压缩文件。
该代码把input.txt.gz压缩文件解压。