浅谈手写node可读流之流动模式(3)

好了,到现在,基础的读取工作已经完成,那么就需要将文件关闭了,上面的open和read方法里面都调用了一个方法:destory,没错,这个就是关闭文件的方法,好了,那么我们来看看这个方法该如何实现吧

destory() { if (typeof this.fd !== "number") { // 发布close事件 return this.emit("close"); } // 将文件关闭,发布close事件 fs.close(this.fd, () => { this.emit("close"); }); }

当然这块的原理就是调用fs模块的close方法啦。

实现可读流第六步:暂停和恢复

既然都说了,node可读流有一个神奇的"开关",就像大坝的阀门一样,可以控制水的流动,同样也可以控制水的暂停啦。当然在node可读流中的暂停是停止对文件的读取,恢复就是将开关打开,继续读取文件内容,那么这两个分别对应的方法就是pause()和resume()方法。

那么我们自己的可读流类里面该如何实现这两个方法的功能呢?非常简单:

我们在定义类的私有属性的时候,定义了这样一个属性flowing,当它的值为true时表示开关打开,反之关闭。

pause() { this.flowing = false;// 将流动模式设置成暂停模式,不会读取文件 } resume() { this.flowing = true;//将模式设置成流动模式,可以读取文件 this.read();// 重新开始读取文件 }

好了,关于node可读流的实现我们就写到这里,快快敲起代码,动手实现一个你自己的可读流吧!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/dc13eed59dbd9252daded3ed2c115db0.html