位置: 编程技术 - 正文

深入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安装淘宝镜像操作方式)

  • 年初结转增值税社保如何做账
  • 小规模纳税人征税率为多少
  • 公司会计日常工作内容
  • 劳务报酬自行申报时间
  • 固定资产盘亏计入什么科目
  • 无偿调入固定资产计提折旧吗
  • 收据能入账抵税吗
  • 季度申报所得税可以研发费加计扣除
  • 本月缴纳增值税和上个月账本金额不对
  • 税盘服务费抵税怎么做分录
  • 股票盈亏怎么计算app
  • 进项发票认证后暂不抵扣
  • 开票软件服务费不交会怎么样
  • 发票已认证未抵扣怎么办
  • 营改增后开餐厅需要交什么税?
  • 双薪制工资如何缴纳个人所得税?
  • 制造型企业采购
  • 总资产周转率计算公式用不用乘100%
  • 更正申报增值税会产生滞纳金吗
  • 金融服务收入怎么算
  • 企业财务内部控制的主要内容有哪些
  • 小规模纳税人专票开3%的专票,以后就不能享受1%
  • 购入设备超过多少才允许一次性扣除
  • 兼营行为的含义
  • win11 zen2
  • 安全处罚管理规定
  • 使用权资产
  • vue slot标签
  • excel2019冻结
  • php自定义协议
  • 企业所得税的销售收入包括哪些
  • 在海里的章鱼
  • php写一个函数,对手机号做基础的判断和处理
  • 女方结婚申请
  • 外经证还有几天到期延期需要的资料
  • 使用van-picker 动态设置当前选中项
  • vue状态机
  • 印花税是不是每个月都要交
  • 金蝶软件怎么查银行科目明细
  • 纳税人填写纳税申报表
  • 一般纳税人开普票税率是3%还是13%
  • 个税申报本期收入是填应发还是实发
  • 销售防疫物资是什么意思
  • 日记总账的适用范围
  • 其他债权投资应收利息计入什么
  • 出租车发票能不能抵扣进项
  • 原始凭证收集
  • 其他应收款期末借方余额表示什么意思
  • 待摊费用和预提费用都属于资产类科目
  • 单位收风险金违法吗
  • 开办费怎么做帐
  • 工资社保医保计算
  • 经营所得与劳务所得的直别
  • centos关闭gui
  • 输入法不显示怎么处理
  • 鼠标点击关闭按钮没反应
  • centos清理缓存
  • ip地址有冲突怎么查看
  • win7系统怎样设置
  • windows 10 20h2推送
  • centos6.5桌面版安装教程
  • win7还原电脑系统的步骤
  • win10在哪里更改软件大小
  • window10的小娜不支持中文版
  • Linux通过shell脚本创建SVN版本库简化创建过程
  • python中numpy.zeros(np.zeros)的使用方法
  • javascript内置对象应用团购
  • Android性能优化工具
  • shell 输出
  • bootstrap教材
  • 开源 android 播放器
  • 基于jQuery的AJAX和JSON实现纯html数据模板
  • python理论基础
  • 加油站怎么收税
  • 自用的房产怎么交房产土地税
  • 陕西省电力app
  • 印花税怎么计提和结转
  • 党建 共享
  • 房屋契税可以退个人所得税吗
  • 安徽省国税局局长是谁
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设