什么是流

举个例子, 有个文件有几个G,想这种文件我们用之前对的 fs.readFile 可以是可是,文件是放在硬盘上的,硬盘的空间是很大的放几个G的文件无所谓的,但是内存不一样呀尤其是服务器,内存可是很珍贵的,服务器上饿系统还要用内存,剩余的内存就没剩多少啦,一个小小图片读取成buffer会有一万多个字节,要是把几个G的文件一下放进内存,放不放的进去是一说,内存总不能只读这个文件不干其他事情了吗,这时候就需要流啦, 我们一点一点的让啊内存读取文件,就像水流一样,一点一点流进内存,这种一点一点的做法就是流的做法
流是指数据的流动,数据从一个地方缓缓的流动到另一地方
cpu只能操作内存

流是方向的

nodejs 分为三种流

  • 可读流 Readable 数据从源头流向内存
  • 可写流Writable 数据从内从流向源头
  • 双工流 Duplex 数据即可从源头流向内存又可从内存流向源头 把可读可写流分装成一个完整对象

    为什么需要流

    其他介质和内存的数据规模不一致
    硬盘可以存放很大的数据,但是内存很小,不可能一下操作很大的数据,内存吃不消, 只能通过拿一部分用一部分。
    其他介质和内存的数据处理能力不一致
    内存的数据处理能力是非常快的,而其他介质,比如硬盘它的数据数据能力一般,没法跟内存的数据处理能力相比,如果内存一下把数据交给硬盘,硬盘就吃不消啦,我就把数据一点一点交给硬盘处理

    文件流

    在nodejs里有一个stream 模块, 它提供两个类,一个是Readable 一个是Writable 不管你是什么流都会继承这两个类,由于是继承关系,那吗流之间的操作就会有一些公共的方法

    什么是文件流

    内存数据和硬盘文件之间的流动