我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 大前端

    • nodejs

      • nodejs有哪些全局对象,怎么用
      • 如何在nodejs中实现分页机制功能
      • 如何在nodejs实现文件上传功能
      • 如何实现nodejs鉴权机制,说一下思路
      • 说说nodejs中require的原理
      • 说说nodejs中的EventEmit是如何实现的
      • 说说nodejs中的事件循环机制理解
      • 说说nodejs中进程通信有哪些方式
      • 说说nodejs中间件是什么,如何封装一个中间件
      • 说说对buffer的理解及应用场景
      • 说说对fs模块的理解及常用方法
      • 说说对nodejs的理解及应用场景
      • 说说对process的理解及常用方法
      • 说说对stream的理解及应用场景
        • 是什么
          • 组成部分
        • 分类
        • 应用场景
        • FAQ
      • nodejs如何进行性能监控及优化
      • nodejs批量改文件名
    • git

    • CI

    • 小程序

    • docker

    • Typescript

    • webpack

    • 安全

  • 基础

  • 框架

  • 情商

  • 算法

  • 网络

  • 千锤百炼
  • 大前端
  • nodejs
fangdown
2021-08-13
目录

说说对stream的理解及应用场景

# 是什么

流:是一种数据传输的手段, 是端到端信息交换的一种方式,是有序的逐块读取或者写入数据,内容是字节

# 组成部分

  • source 源
  • pipe 管道
  • dest 目标

# 分类

  • 可写流
  • 可读流
  • 双工流
  • 转化流

在NodeJS中HTTP服务器模块中,request 是可读流,response 是可写流。还有fs 模块,能同时处理可读和可写文件流

# 应用场景

  • 大文件返回
const server = http.createServer(function (req, res) {
    const method = req.method; // 获取请求方法
    if (method === 'GET') { // get 请求
        const fileName = path.resolve(__dirname, 'data.txt');
        let stream = fs.createReadStream(fileName);
        stream.pipe(res); // 将 res 作为 stream 的 dest
    }
});
server.listen(8000);
  • 文件操作
const fs = require('fs')
const path = require('path')

// 两个文件名
const fileName1 = path.resolve(__dirname, 'data.txt')
const fileName2 = path.resolve(__dirname, 'data-bak.txt')
// 读取文件的 stream 对象
const readStream = fs.createReadStream(fileName1)
// 写入文件的 stream 对象
const writeStream = fs.createWriteStream(fileName2)
// 通过 pipe执行拷贝,数据流转
readStream.pipe(writeStream)
// 数据读取完成监听,即拷贝完成
readStream.on('end', function () {
    console.log('拷贝完成')
})

  • 打包工具的底层操作 如gulp

# FAQ

#stream
上次更新: 2021/12/19, 18:05:42
说说对process的理解及常用方法
nodejs如何进行性能监控及优化

← 说说对process的理解及常用方法 nodejs如何进行性能监控及优化→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式