zoukankan      html  css  js  c++  java
  • Node基础模块

      Node 基础模块 - Stream (流)

      Stream (流)是一个抽象的概念,在我们开发中会经常使用到(例如:fs 模块文件的读取和写入、http 请求的发送和相应 以及

    控制台上面打印日志)。

      首页 Stream (流) 这个模块继承 EventEmitter 模块,所以这里可以使用 EventEmitter 的事件事件订阅发布模式。

      个人理解,流类就是封装了一套对输入输出的数据的缓存 (利用 Buffer ,分配一定内存,分批读取或者写入) 并且进行操作。

      分类

      按照 Stream (流) 的用途可分为 :可写流 ( stream.Wiritable )、可读流( stream.Readable )、双工流 (stream.Duplex)、转换流 (stream.Transform)。

    我们只介绍下可写和可读流。

      可写流 (stream.Writable) 常见的有:

        fs 模块的可写流

        http 的响应

        客户端的请求

        子进程的 stdin

      它们都是实现了 stream.Writable 类的接口

      可读流 ( stream.Readable ) 常见的有:

        fs 的可读流

        http 的请求

        客户端的响应

      他们都实现了 stream.Readbale 类的接口

      可写流 ( stream.Writeable )

      主要事件句柄:

      close 、error、finish :基础句柄

      drain:当分配的内存满了 ( writer.write 返回 false ) 的时候,内存释放后再次可以使用的时候触发

      pipe:当可读流调用管道输入数据的时候( reader.pipe )。调用并返回可读流

      主要方法:

      write:写入数据

      end:结束写入流。

      setDefaultEncoding:设置编码

    /*
    * 创建一个可写流
    * fs 的写入流继承 stream.Writeable 类
    * */
    const writer = fs.createWriteStream('./2.txt');
    
    /*
    * 缓冲区满了,释放后重新可以写入事件
    * */
    writer.on('drain', () => {
        console.log('重新可以写入事件');
    })
    /*
    * 结束事件
    * */
    writer.on('finish', () => {
        console.log('所有写入完成');
    })
    /*
    * 发生错误事件
    * */
    writer.on('error', () => {
        console.log('所有写入完成');
    })
    /*
    * 管道写入事件
    * 当可读流调用了 pipe(writer) 时候触发事件,并传入 可读流对象
    * 当可读流调用了 unpipe(writer) 时候触发事件,并传入 可读流对象
    * */
    writer.on('pipe', () => {
        console.log('所有写入完成');
    })
    writer.on('unpipe', () => {
        console.log('所有写入完成');
    })
    
    /*
    * 设置编码
    * */
    writer.setDefaultEncoding('utf8')
    /*
    * 写入数据到流
    * */
    writer.write(',test','utf8',()=>{})
    /*
    * 写入完毕,写入目的文件
    * */
    writer.end('end!')
    

      

      可读流  ( stream.Readable )

      可读流分为两种模式:暂停模式和流动模式

      流动模式可以自动的读取数据到目标。切换到流动模式可以通过:data 事件句柄触发、调用 resume 方法、可以通过管道传输

      暂停模式就是需要手动读取,需要调用 read。切换到暂停模式可以通过:调用 pause 方法、移除管道输入目标

      常见的事件句柄:

      data :用于接受数据,触发流动模式

      end/error:结束/错误

      常见的方法:

      read:暂停模式读取数据

      pipe:以管道形式向目标传输数据

      se'tEncodding: 设置编码

    const writer = fs.createReadStream('./2.txt');
    writer.setEncoding('utf8')
    writer.on('data',(res)=>{
        console.log(res)
    })
    

      

      

    readline // 逐行读取数据

      

  • 相关阅读:
    0099 数据类型转换 之 转为布尔:Boolean()
    0098 数据类型转换 之 转为数字: parseInt 、 parseFloat 、Number()、隐式转换
    0097 数据类型转换 之 转为字符串:toString()、String() 、加号拼接、隐式转换
    0096 获取变量数据类型typeof、字面量
    0095 布尔型Boolean,Undefined和 Null
    0094 字符串型 String
    0093 数字型 Number:整数、小数 、数字型进制、数字型范围、数字型三个特殊值、isNaN
    0092 数据类型、简单数据类型概述
    0091 交换两个变量的值( 实现思路:使用一个 临时变量 用来做中间存储 )
    SCSS 常用属性合集
  • 原文地址:https://www.cnblogs.com/jiebba/p/12742882.html
Copyright © 2011-2022 走看看