什么是流
举个例子, 有个文件有几个G,想这种文件我们用之前对的 fs.readFile
可以是可是,文件是放在硬盘上的,硬盘的空间是很大的放几个G的文件无所谓的,但是内存不一样呀尤其是服务器,内存可是很珍贵的,服务器上饿系统还要用内存,剩余的内存就没剩多少啦,一个小小图片读取成buffer会有一万多个字节,要是把几个G的文件一下放进内存,放不放的进去是一说,内存总不能只读这个文件不干其他事情了吗,这时候就需要流啦, 我们一点一点的让啊内存读取文件,就像水流一样,一点一点流进内存,这种一点一点的做法就是流的做法
流是指数据的流动,数据从一个地方缓缓的流动到另一地方
cpu只能操作内存
流是方向的
nodejs 分为三种流
- 可读流 Readable 数据从源头流向内存
- 可写流Writable 数据从内从流向源头
- 双工流 Duplex 数据即可从源头流向内存又可从内存流向源头 把可读可写流分装成一个完整对象
为什么需要流
其他介质和内存的数据规模不一致
硬盘可以存放很大的数据,但是内存很小,不可能一下操作很大的数据,内存吃不消, 只能通过拿一部分用一部分。
其他介质和内存的数据处理能力不一致
内存的数据处理能力是非常快的,而其他介质,比如硬盘它的数据数据能力一般,没法跟内存的数据处理能力相比,如果内存一下把数据交给硬盘,硬盘就吃不消啦,我就把数据一点一点交给硬盘处理文件流
在nodejs里有一个stream 模块, 它提供两个类,一个是Readable 一个是Writable 不管你是什么流都会继承这两个类,由于是继承关系,那吗流之间的操作就会有一些公共的方法什么是文件流
内存数据和硬盘文件之间的流动