位置: 编程技术 - 正文

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

  • 纳税申报的流程是什么
  • 结转增值税会计摘要
  • 增值税存量和增量留抵退税
  • 运输公司的车辆保险费计入什么科目
  • 完税证明可以重复打印吗
  • 免征增值税项目记忆
  • 个人独资企业500万以下
  • 微信公众号认证费用
  • 员工午餐费要交个税吗
  • 土地闲置费是否可以税前扣除
  • 二手车交易怎么办理过户手续
  • pos机刷卡的银行有哪些
  • 员工离职后收取客户钱款
  • 资金账簿印花税最新政策2023
  • 组合销售带来的收益
  • 收到雇主责任险发票计入什么科目
  • 增值税普通发票红冲之后还能查询吗
  • 已进行账务处理怎么处理
  • 增值税的调增调减
  • 海关增值税发票双抬头
  • 事业单位采购管理办法
  • 企业补充流动资金具体用途
  • windows11怎么回退
  • 联想小新Air15如何进入bois
  • fpx是什么文件
  • 不能报销的发票可以丢掉吗
  • 个人所得税如何计算
  • 小企业成本管理方法
  • 小企业会计准则调整以前年度费用分录
  • vue super
  • php字符串包含某个字符串
  • php redis常用命令
  • php生成图片验证怎么弄
  • yii2超好用的日期组件和时间组件
  • php判断https
  • 织梦商城
  • 可转债可以不卖吗
  • 购办公桌椅入什么费用
  • 一万元,两分的利息,一年利息是多少
  • 地方水利建设基金减免政策2023
  • 土地使用权的摊销计入在建工程
  • 银行抵债资产如何更快处置
  • 企业营改增税率是多少
  • 事业单位借款给下属单位
  • 公司收到个人转账收入
  • 幼儿园增值税优惠政策
  • 建筑工程劳务分包,工伤责任承担
  • 售后回租的实际利率怎么计算
  • 本月未过账的凭证怎么写
  • 原材料入库单应根据采购订单还是到货数量
  • 建立明细账的操作步骤
  • 外资房地产企业 利润汇出比例
  • sql解析框架
  • 删除windowsapp
  • windows取消ctrl+alt+del
  • wp升级
  • secbizsrv.exe是什么程序
  • 电脑上view是什么意思
  • win7系统修改
  • win7自带拍照功能
  • windows8进入桌面
  • 安装ubuntu不支持nvidia显卡
  • win7共享设置(详细图文步骤)
  • windows下打开注册表的命令是什么
  • win10内置应用大全
  • Win10预览版镜像
  • 重装win7旗舰版重启后黑屏
  • win8 metro启动界面
  • python复制文件内容
  • 单向链表的基本操作
  • javascript要怎么学
  • JavaScript中的变量名不区分大小写
  • unity3d基础教程
  • python字号
  • javascript字符类型
  • 非营利组织认定条件
  • 郑州二套房契税征收2023标准是多少
  • 广州市公安局分局待遇
  • 企业应交个人所得税分录
  • 深圳布吉下水径旧改
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设