Stream文件流
由于Buffer缓冲区限制在1GB,超过1GB的文件无法直接完成读/写操作,在读/写大文件时,如果读/写资源一直持续不停止,Node.js将无法继续其他工作。为此,Node.js中提供了Stream文件流模块,用来解决大数据文件操作的问题。
文件流的概念
Node.js的File System模块并没有提供一个 copy的方法,但是通过读取文件和写人文件的方式可以实现,即把文件A的内容全部读入Buffer缓冲区,然后再从缓冲区读出写人文件B,该过程的执行流程图如下图所示。
在上图中,可以看出要读取数据需要存放到Buffer缓冲区中,然后再从缓冲区读出写入到文件,Buffer缓冲区限制在1GB,这样的操作对于小型的文本文件,没有多大问题,但是对于体积较大的文件,比如音频、视频文件,动辄几吉字节大小,如果使用理想的方法,很容易使内存“爆仓”。理想的方法应该是读一部分,写一部分,不管文件有多大,只要时间允许,总会处理完成,这里就需要用到流的概念,文件复制操作使用文件流的读/写机制进行会防止“爆仓”现象的出现,流程如图所示。