位置: 编程技术 - 正文

深入nodejs中流(stream)的理解(nodejs深入浅出pdf百度云)

编辑:rootadmin

推荐整理分享深入nodejs中流(stream)的理解(nodejs深入浅出pdf百度云),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入node.js技术栈,nodejs ini,nodejs ini,nodejs init,nodejs深入浅出pdf百度云,深入node.js技术栈,nodejs 深入浅出,深入node.js技术栈,内容如对您有帮助,希望把文章链接给更多的朋友!

nodejs的fs模块并没有提供一个copy的方法,但我们可以很容易的实现一个,比如:

这种方式是把文件内容全部读入内存,然后再写入文件,对于小型的文本文件,这没有多大问题,比如grunt-file-copy就是这样实现的。但是对于体积较大的二进制文件,比如音频、视频文件,动辄几个GB大小,如果使用这种方法,很容易使内存“爆仓”。理想的方法应该是读一部分,写一部分,不管文件有多大,只要时间允许,总会处理完成,这里就需要用到流的概念。

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

Stream在nodejs中是EventEmitter的实现,并且有多种实现形式,例如:

http responses request fs read write streams zlib streams tcp sockets child process stdout and stderr

上面的文件复制可以简单实现一下:

深入nodejs中流(stream)的理解(nodejs深入浅出pdf百度云)

上面的写法有一些问题,如果写入的速度跟不上读取的速度,有可能导致数据丢失。正常的情况应该是,写完一段,再读取下一段,如果没有写完的话,就让读取流先暂停,等写完再继续,于是代码可以修改为:

或者使用更直接的pipe

下面是一个更加完整的复制文件的过程

可以把上面的代码保存为copy.js试验一下

我们添加了一个递归的setTimeout(或者直接使用setInterval)来做一个旁观者,每ms观察一次完成进度,并把已完成的大小、百分比和复制速度一并写到控制台上,当复制完成时,计算总的耗费时间,效果如图:

我们复制了一集p的权利的游戏第四季第7集,大概3.G大小,由于使用了SSD,可以看到速度还是非常不错的,哈哈哈~ 复制完成后,显示总花费时间

结合nodejs的readline, process.argv等模块,我们可以添加覆盖提示、强制覆盖、动态指定文件路径等完整的复制方法,有兴趣的可以实现一下,实现完成,可以

这样就可以使用自己写的mycopy命令替代系统的cp命令

标签: nodejs深入浅出pdf百度云

本文链接地址:https://www.jiuchutong.com/biancheng/377895.html 转载请保留说明!

上一篇:nodejs学习笔记之路由(nodejs基础知识)

下一篇:利用NPM淘宝的node.js镜像加速nvm(npm安装淘宝镜像操作方式)

  • 个人是否可以申请精神司法鉴定
  • 劳务派遣公司必须设立股东
  • 自然人城建税减半征收
  • 净利润为什么要减折旧
  • 销售收入的暂估入账是否结转利润
  • 公司交的物业费入什么科目
  • 允许税前扣除的利息支出
  • 担保费和评审费计入什么科目
  • 研发支出费用化支出每个月都要结转吗
  • 计提坏账准备的前提条件
  • 开具红字专用发票的情形
  • 定额发票使用年限规定
  • 工程结算收入要交税吗
  • 原材料采购的会计核算风险
  • 使用权资产的界定
  • 增值税纳税申报表怎么填
  • 旅游服务税目
  • 应付的职工薪酬
  • 房地产行业需要做环评吗
  • bios设置网卡开启
  • 2021最新版眼保健视频
  • 暂存款账务处理
  • 如何配置无线路由器参数
  • kb4586863更新
  • php strrpos函数
  • 关联企业承担什么责任
  • 工程施工科目借贷方向
  • 多收不用退的货物怎么办
  • 职工教育经费列支范围规定
  • 公司想减少注册资本
  • 固定资产如何做账务处理
  • php操作mysql的特点
  • php编程中的_横线表示什么
  • 应纳所得税额税率表
  • laravel常用命令
  • 自产应税消费品用于在建工程要交增值税吗
  • vue清空页面数据
  • phptime函数
  • reset=target
  • 资产负债表各项目的填列依据是
  • 待抵扣进项税额的分录
  • 第三方车行
  • 新会计准则基本准则
  • 固定资产计入管理费用就不用折旧了吗
  • 企业研发费用率怎么算
  • 年末计提企业所得税的依据
  • 待抵扣进项税额和进项税额的区别
  • 发票冲红的会计怎么处理
  • 项目过路费应该挂什么科目
  • 每个月结转损益会计分录
  • 工程类发票账务后面需附什么单据呢
  • 登记银行存款日记账的实训心得
  • 出售无形资产属什么科目
  • mysql5.7.24安装配置教程
  • mssql server .ldf和.mdf的文件附加数据库的sql语句
  • win8怎么没有我的电脑
  • xp系统怎样创建网络连接
  • windows server 2003与2008的区别联系与选择指南
  • mac截屏后的图片在哪里
  • linux怎么安装c语言编程软件
  • freebsd怎么用
  • windows电脑设置
  • win10 version 1607 累积更新失败卡了怎么办
  • ip地址xp系统
  • win10的qq
  • WIN10系统怎么改成泰语
  • linux系统ll
  • 下列有关javascript中call和apply
  • 用js实现导航栏的下拉列表
  • jquery 插件写法
  • jquery中ajax跨域方法实例分析
  • python类的理解
  • 基于JAVASCRIPT实现的可视化工具是
  • json遍历对象集合
  • 如何给税务局提供发票
  • 小规模纳税人利润如何缴税
  • 四川办税大厅
  • 江苏单位医保如何查询
  • 建筑施工劳务资质
  • 工伤保险怎么补申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设