位置: 编程技术 - 正文

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

  • 报废固定资产可以收定金吗合法吗
  • 酒店收入是以当月入账时间为准吗
  • 领发票凭证做什么用
  • 贷款公司是怎么贷款的
  • 报关时电子口岸电子委托应该什么时候做
  • 免费赠送货物出租合同
  • 计提社保贷方科目是什么
  • 其他业务支出是
  • 股东出资方式和比例是否合法?并说明理由
  • 金税盘付费
  • 小规模纳税人可以收13%的专票吗?
  • 地税注销流程
  • 营改增之后还有营业税金及附加吗
  • 房产增值税是怎么交的呢
  • 合作社能否开具专用发票
  • 从事旅游的小型微利企业能享受哪些优惠?
  • 企业卖固定资产
  • 全资子公司如何证明自己的财产完全独立于母公司
  • 收到单位失业保险怎么办
  • 资产总额小于所有者权益合计
  • 工资必须通过银行代发吗
  • 车船使用税计缴标准
  • 专利代理服务费入账
  • 仓库存在不足
  • 土地增值税计算例题
  • vim diff对比
  • 支付以前年度增值税怎么做账
  • wifi万能钥匙密码王
  • 若依管理系统前端代码分析
  • 老生常谈含义
  • 一证通网上报税流程
  • css加载是异步的吗
  • php使用什么开发工具
  • 企业从应付职工工资中代扣的职工房租应借记
  • 收到转账怎么写分录
  • vue页面刷新时原有的数据还在吗
  • vue display
  • element ui
  • redis相关
  • 其他应付款包括应付股利和应付利息吗
  • 产权转移数据印花
  • 管家婆中已经过账的进货单怎么删除?
  • javascript和java有什么区别
  • 无发生额有没有对账单
  • 车辆购置税能否融资租赁
  • 控股子公司破产清算 母公司需审计
  • sqlserver获取数据库名
  • 计提企业所得税的会计科目
  • 固定资产报废的账务处理
  • 当月销售下月开票
  • 生产成本与工程施工
  • 施工人员的工资计入
  • 当期损益包括哪些科目指的
  • 记账凭证分为哪几类,应具备哪些主要内容
  • 债务重组的适用范围
  • mysql表字段设置默认值
  • spoolsv.exe是什么文件
  • xp系统exiting pxe rom
  • linux sed-i
  • win7 mysql
  • win7网卡驱动怎么卸载
  • hdaudpropshortcut.exe是什么进程 作用是什么 hdaudpropshortcut进程查询
  • linux wc命令详解
  • windows隐藏分区
  • Win8系统怎么安装
  • unix2dos命令
  • win8 设置
  • win8外接显示器没反应怎么办
  • QOpenGLWindow 、QOpenGLWidget 和 QPainter混合渲染方法初探
  • jsoncpp rapidjson
  • windows与苹果
  • css display:none使用注意事项小结
  • unity ulua
  • javascript的
  • unity物体碰撞爆炸
  • 重庆市电子发票样式
  • 税收分类分级管理是什么
  • 个人自行申报纳税
  • 所得税调增调减搞不清
  • 地税局一般几点下班
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设