位置: 编程技术 - 正文

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

  • 收到税务局退款怎么做分录
  • 背书行为有效的是指什么
  • 小规模公司注销时账务要如何处理
  • 房屋租赁发票票样
  • 核定征收需要什么条件和手续
  • 法人可以是办税人和发票领购人吗
  • 打印复印费的明细怎么开?
  • 固定资产加速折旧税收优惠政策
  • 公司简易注销需要清算吗
  • 天猫费率是什么
  • 空白增值税专用发票丢失罚款
  • 汇算清缴后发生销售退回会计分录
  • 拍卖的商铺过户费怎么算
  • 存货盘亏损失可以扣除吗
  • 打样费单位是什么
  • 公司借款给个人利息怎么做账
  • 个税起征点调整至5000
  • 工程保险费属于企业管理费吗
  • 非增值税纳税人有哪些
  • 增值税发票验证码
  • 以前年度补交的税款进什么科目?
  • 计提工资怎么做账务处理
  • 成本利润率的计算公式中,成本费用总额包括
  • 跨年度的费用发票,如何做分录
  • 银行理财产品属于基金吗
  • 金税三期核心征管系统行政处罚
  • 核定征收的个税怎么算
  • 发票收到本月进账怎么办
  • bios中关闭软盘
  • 苹果电脑macos big sur
  • 鸿蒙系统怎么自动填充密码
  • 筹建期间内发生的开办费属于什么费用
  • win10锁屏壁纸模糊怎么回事
  • swoole和websocket的区别
  • php面向对象优点,缺点
  • 用产品抵债的合同怎么写
  • 购入无形资产会计处理
  • 以前年度损益调整属于哪类科目
  • 浅谈php中的错误处理方法
  • 事故赔偿金怎么处理
  • thinkphp update方法
  • MAE详解
  • python如何提取字典中的键
  • 财务费用汇兑损失是什么
  • 研发费用算期间费用吗
  • 未形成无形资产计入当期损益的
  • 什么情况下需要异地预缴增值税
  • 固定资产清理如何申报增值税
  • 英文好书推荐
  • php框架 hyperf
  • 绿化租赁合同要交印花税吗
  • 淘宝电子发票怎么申请
  • 持有至到期投资减值准备可以转回吗
  • 收不回来的问题
  • 电子发票已开出客户退款会计处理是怎样的?
  • 商品预计退回会扣钱吗
  • 购置办公大楼,会计处理
  • 库存商品建账
  • 企业需要报哪些税
  • 固定资产清理的税率是多少
  • 领导出差差旅费怎么报销
  • 可持续增长率和内部增长率的区别
  • sql搜索字段名
  • linux的安装
  • u深度u盘启动盘制作工具无法进入电脑
  • wmiprvse.exe这是什么进程
  • linux7修改ssh端口
  • safeplugin是什么软件
  • 解决安装后软件icon一圈白边问题
  • linux从一个命令获取数据到另一个命令
  • SQLite -- 嵌入式关系型数据库
  • 关于javascript函数
  • jquery操作table
  • Tasharen Fog of War v1.0战争迷雾插件的使用(含Unity5.0Bug解决)
  • 安卓启动器修改
  • 税务 涉税中介
  • 冻结银行账户属于什么
  • 江苏电子税务局客服电话
  • 淮北税务局领导简介
  • 无纸化同义词
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设