位置: 编程技术 - 正文

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

  • 增值税视同销售账务处理怎么做?
  • 结转本年利润要扣除企业所得税吗
  • 维修费开票属于哪个大类
  • 通讯费没有公司抬头怎么报销
  • 农产品的收购价格
  • 销售单用途商业预付卡是否可能涉嫌诈骗
  • 员工宿舍免征房产税
  • 土地转让交哪些税种
  • 高速路费电子发票怎么打印
  • 发票抬头不完整能用吗
  • 小规模纳税人购车可以抵扣多少税
  • 建筑公司运营的流程
  • 收到对方的预付款,需要多久开发票
  • 投资者撤回投资额300000
  • 个人所得税怎么查工资明细
  • 报价表含税点是什么意思?
  • 作废的发票怎么复制开新票
  • 一般纳税人能否享受残保金优惠
  • 实时扣税3001会计科目
  • 变更办税人信息在哪变更
  • 公务用车用油
  • 货款打多了对方不愿意退款
  • 额外收入如何避税
  • 子公司之间固定资产划转 增值税会计处理
  • 库存商品进货价怎么算
  • 产值税收是什么意思
  • 如何使用腾讯电子签维护自己的权益
  • 收到进项专用发票会计分录
  • 发票上没有校验码
  • 纳税确有困难标准
  • smarty模板判断数组为空的方法
  • codevein配置要求
  • 流动资产占总资产比重多少较为合适
  • 收到银行承兑汇票的账务处理
  • 结转,结余
  • 工资一定要对公发吗
  • 支付个人赔偿款入账
  • 简要说说vue是什么?有什么主要的特性?
  • 宝塔wordpress安装
  • python del语法
  • 企业转让应收账款分录
  • 补发工资账务处理
  • 开办费新会计准则
  • 古腾堡中文官网
  • 员工宿舍水电费计入什么会计科目
  • 小微企业材料
  • 高新企业申请流程
  • Sql Server 2005的1433端口打开局域网访问和进行远程连接
  • 广告制作交文化建设税吗
  • 纳税人有
  • 年化收益率和年利率区别
  • 港口建设费收费标准
  • 技术服务费发票样本
  • 税收返还如何做账
  • 生育津贴与员工有关吗
  • 依法建账的法是指
  • sqlserver中存储过程
  • sql教程
  • windowsxp如何清理磁盘
  • mac os 应用
  • 进去界面黑屏
  • windows8如何添加打印机
  • win8打开蓝牙设置
  • 列宽自适应
  • python怎么用
  • unity监视器
  • sql命令语句
  • 使用vs code开发Django
  • nodejs cgi
  • androidstudio的jdk
  • jquery遍历div
  • jquery使用教程
  • json对象结构中,关键字key必须为什么类型
  • jquery访问本地html
  • js如何判断是否有定时器功能并清除
  • android 界面切换
  • 投资性房地产如何合并抵消
  • 黑龙江电子税务局app手机
  • 担保费属于什么服务
  • 西安市个税证明去哪里打印
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设