nodejs的这种方式是把文件内容全部读入内存,然后再写入文件,对于小型的文本文件,这没有多大问题,比如grunt-file-copy就是这样实现的。但是对于体积较大的二进制文件,比如音频、视频文件,动辄几个GB大小,如果使用这种方法,很容易使内存“爆仓”。理想的方法应该是读一部分,写一部分,不管文件有多大,只要时间允许,总会处理完成,这里就需要用到流的概念。如上面高大上的图片所示,我们把文件比作装水的桶,而水就是文件里的内容,我们用一根管子连接两个桶使得水从一个桶流入另一个桶,这样就慢慢的实现了大文件的复制过程。
暂无评论