Node.js文件流

1.什么是流

概念

流是指数据的流动,数据从一个地方缓缓的流动到另一个地方

分类

流是有方向的(不同的语言的叫法是不同的,例如java中叫输入流和输出流)

可读流(Readable)

数据从源头流向内存

可写流(Writable)

数据从内存流向源头

双工流(Duplex)

数据即可从源头流向内存又可从内存流向源头

2.为什么需要流

其他介质和内存的数据规模不一致

 

其他介质和内存的数据处理能力不一致

 

3.什么是文件流

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

4.文件流的创建

1. fs.createReadStream(path[, options])

1. 含义

创建一个文件可读流,用于读取文件内容

2. path

读取的文件路径

3. options

可选配置对象

3.1 encoding:编码方式

3.2 start:起始字节

3.3 end:结束字节

3.4 highWaterMark:每次读取数量

①如果encoding有值,该数量表示一个字符数,例如:一个汉字字符占3个字节

②如果encoding为null,该数量表示字节数

3.5 autoClose :默认为true,读完自动关闭

4. 返回:Readable的子类ReadStream

4.1 事件:rs.on(事件名, 处理函数)

4.1.1 open

文件打开事件,文件被打开后触发

4.1.2 error

发生错误时触发

4.1.3 close

文件被关闭后触发

4.1.4 data

读取到一部分数据后触发

注册data事件后,才会真正开始读取

4.1.5 end

所有数据读取完毕后触发

4.2 rs.pause()

暂停读取, 会触发pause事件

4.3 rs.resume()

恢复读取,会触发resume事件

4.4 rs.close()

2. fs.createWriteStream(path[, options])

1. 含义

创建一个写入流

2. path

写入的文件路径

3. options

flags:操作文件的方式。 w:覆盖 ,a:追加

encoding:编码方式

start:起始字节

highWaterMark:每次最多写入的字节数

autoClose :默认为true,写完自动关闭

4.返回:Writable的字类WriteStream

4.1 ws.on(事件名, 处理函数)

4.1.1 open

4.1.2 error

4.1.3 close

4.2 ws.write(data)

写入一组数据,data可以是字符串或Buffer

返回一个boolean值,true:写入通道没有被填满,接下来的数据可以直接写入,无须排队。false:写入通道目前已被填满,接下来的数据将进入写入队列

 

 

背压问题:因为写入队列是内存中的数据,是有限的

当写入队列清空时,会触发drain事件

4.3 ws.end([data])

data是可选的,表示关闭前的最后一次写入

3.rs.pipe(ws)

将可读流连接到可写流

可解决背压问题

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值