fs模块处理文件的缺点
- 将文件的数据全读到内存中,在把数据写到文件内,会大量占用内存
流的优势
- 流是边读边写的,读取一段文件,就将它写入
- 流是基于事件的,所有的流对象都用 on绑定事件,并触发
流的分类(四类)
- Writable - 可写入数据的流(fs.createWriteStream())
- Readable - 可读取数据的流(fs.createReadStream())
- Duplex - 可读又可写的流(net.Socket)
- Transform - 在读写过程中可以修改或转换数据的 Duplex流(zlib.createDeflate())
所有的流都是 EventEmitter 的实例。触发它们的事件可以读或者写入数据,我们可以使用pipe方法消费流的数据