nodejs中的stream(流)

1. stream简介:

流(stream)在 Node.js 中是处理流数据的抽象接口(abstract interface)。 node中部分方法或类,通过实现stream中提供的类,来进行流数据的处理。

如:fs.createReadStream , fs.createWriteStream , HTTP 请求 和 process.stdout等都是stream的示例

2. stream的特点

  1. 流是单向的
  2. 流都是EventEmitter的示例,都可以使用发布订阅模式进行事件交互

3. 流的类型

  1. Readable:只能进行读取操作(如 fs.createReadStream())
  2. Writable:只能进行写入操作(如 fs.createWriteStream())
  3. Duplex:可进行读取&写入操作(如 net.Socket)
  4. Transform:在读写过程中可以修改和变换数据的 Duplex 流(如 zlib.createDeflate())

4. 可读流

4.1 自定义可读流
    let {Readable} = require('stream');
    // 通过继承Readable类,且重写_read()方法,来创建自定义的可读流
    // 实例的push方法,push的内容相当于,data事件监测到的内容。当push(null)相当于关闭此可读流的通道,在push(null)后,再调用push方法则报错

    class MyRead extends Readable{
        _read(){}
    }
    let mr = new MyRead;
    mr.on('data',function(data){
        console.log(data);
    });
    mr.push('124')
    
复制代码
4.2 可读流状态

可读流有3种状态

4.2 以fs.createReadStream(path,options)为例,讲解可读流事件
4.2.1 创建可读流
    let rs = new ReadStream(path.join(__dirname,'1.txt'),{
        flags:'r', // 文件的操作是读取操作
        encoding:'utf8', // 默认是null null代表的是buffer
        autoClose:true, // 读取完毕后是否自动关闭
        highWaterMark:3,// 缓存区默认大小 默认是64k  64*1024b
        start:0, // 文件读取开始位置  
        end:3 // 文件读取结束位置     
    });
复制代码
4.2.2

转载于:https://juejin.im/post/5ad6d13851882548fe4aa576

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值