Nodejs stream流

作者: JX灬君 | 来源:发表于2021-10-25 13:09 被阅读0次
  • 管道流最经典的管道流图

    • 我们把文件比作装水的桶,而水就是文件里的内容,我们用一根管子(pipe)连接两个桶使得水从一个桶流入另一个桶,这样就慢慢的实现了大文件的复制过程。


      image.png
  • 什么是stream

    • 每个stream对象都是一个水桶,通过管道pipe流到dest目标里
    • stream是一个抽象接口,node中有很多对象实现了这个接口
    • 对http服务器发起请求的request对象就是一个stream流
  • 了解stream流能处理的问题,了解IO操作的性能瓶颈概念

    • IO包括'网络IO'和'文件IO'
    • 相比于CPU计算和内存读写,IO的突出特点就是:慢!
    • 在有限的硬件资源下提高IO的操作效率
    • stream流能提升IO的的操作效率的方法
  • stream基础实例(根据实际项目变通使用)

    • 标准输入输出
      process.stdin.pipe(process.stdout)
    • http的pipe管道
      const http = require('http')
      const server = http.createServer((req, res) => {
        if(req.method === 'POST') {
          req.pipe(res) // pipe管道
        }
      })
      server.listen(8000)
      
    • stream拷贝文件(拷贝效率高)
      var fs = require('fs')
      var path = require('path')
      // 两个文件名
      var fileName1 = path.resolve(__dirname, 'data.txt')
      var fileName2 = path.resolve(__dirname, 'databak.txt')
      // 读取文件的stream流
      var readStream = fs.createReadStream(fileName1)
      // 写入文件的stream流
      var writeStream = fs.createWriteStream(fileName2)
      // 通过拷贝,执行pipe
      readStream.pipe(writeStream)
      // 可以监听data,查看每一步操作的数据
      readStream.on('data', chunk => {
        console.log(chunk.toString());
      })
      // 数据读取完成,即拷贝完成
      readStream.on('end', function() {
        console.log('拷贝完成');
      })
      
    • stream读取文件
      const http = require('http')
      const path = require('path')
      const fs = require('fs')
      const server = http.createServer((req, res) => {
        if(req.method === 'GET') {
          var fileName = path.resolve(__dirname, 'data.txt')
          var stream = fs.createReadStream(fileName)
          stream.pipe(res) // 将res作为stream的dest
        }
      })
      server.listen(8000)
      

相关文章

  • Nodejs stream流

    管道流最经典的管道流图我们把文件比作装水的桶,而水就是文件里的内容,我们用一根管子(pipe)连接两个桶使得水从一...

  • node之stream - 流

    流(stream)是Nodejs中出处理流式数据的抽象接口。stream模块提供了一些API,用于构建实现了流接口...

  • NodeJS-流stream

    Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。例如,对http 服务器发起请求的reques...

  • 浅析nodejs中的stream(流)

    这篇文章我们来聊一下nodejs中的stream,也就是nodejs中的流。 什么是流呢?从字面上来看我们应该可以...

  • nodejs学习笔记Stream(流)

    什么流 通俗的说就是一种,有起点和终点的字节数据传输手段,把数据从一个地方传到另一个地方。流(Stream)是一个...

  • NodeJS学习笔记——Stream(流)

    流(stream)在 Node.js 中是处理流数据的抽象接口(abstract interface)。Node....

  • [读] NodeJS stream 一:Buffer

    NodeJS stream 一:Buffer

  • JDK8新特性之Stream流

    是什么是Stream流 java.util.stream.Stream Stream流和传统的IO流,它们都叫流,...

  • 2020-07-04【Stream流】

    体验Stream流 Stream流的生成方式 Stream流的常见中间操作 Stream流的常见终结操作 Stre...

  • JavaStream流基础学习

    Stream流 Straem流使用 使用Sream流: 一行搞定 1.2 Stream流生成方式 Stream流的...

网友评论

    本文标题:Nodejs stream流

    本文链接:https://www.haomeiwen.com/subject/bxijaltx.html