位置: 编程技术 - 正文

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

  • 计提税费如何写分录
  • 小企业今年怎么过
  • 母公司获得分红怎么做账
  • 建筑工程怎么确定施工工程进度
  • 收到预付款的发票怎么写摘要
  • 出口港杂费是什么费用
  • 随意变更会计处理方法违背了
  • 固定资产盘点账实不符
  • 二手商品没有发票
  • 外购货物应抵扣的进项税额税率
  • 筹资活动现金流量净额为负
  • 商贸公司购进农产品可以抵扣吗
  • 流动比率计算公式速动比率
  • 开办费转入管理费用分录
  • 土地租赁费含有多少税率
  • 员工工作服计入劳保费吗
  • 通讯费补贴要交税吗
  • 个体户的公账怎么操作
  • 库存股是实收资本吗
  • 电子税务局印花税税种认定
  • 过期未抵扣的发票对企业有什么影响
  • 可变现净值是不是就是毛利
  • 抄税和申报是一回事吗
  • 应交税费年末账务处理
  • linux的pipe
  • mac怎么创建icloud
  • PHP:xml_set_object()的用法_XML解析器函数
  • 若依框架自动生成代码
  • 固定资产和低值易耗品的登记和管理咋弄?
  • 非盈利组织稳定吗
  • 工程施工与工程结算会计科目
  • 未按规定开具发票怎么处罚
  • 微信小程序解决跨域问题
  • 纳税人提供劳务派遣服务,选择差额纳税的,按照5%
  • 加拿大西北部的首都
  • uniapp image mode
  • 一次性取得的租金收入
  • 公允价值变动损益和投资收益区别
  • 纳税检查调整的销售额确认收入吗
  • springmvc常见问题
  • es6面试题promise
  • nodejs hook
  • 递延收益和其他应付款的区别
  • 增值税纳税申报表怎么填
  • 进项税额销项税额
  • 待抵扣进项税额和进项税额的区别
  • 民办非企业培训机构注册流程
  • 计提本月工资社保怎么扣
  • 如何计提增值税销项税额
  • 出纳报销时应注意什么
  • 帝国cms工作流
  • MySQL数据库存储引擎
  • 权益工具是金融资产还是非金融资产
  • 关联交易纳税调整期限
  • 对公账户往来款需要归还吗
  • SQL 2005 ERROR:3145 解决办法(备份集中的数据库备份与现有的数据库不同)
  • sqlserver分布式事务
  • 发现以前年度错账,不论错账是否涉及损益
  • 残保金计提比例
  • 固定资产不折旧直接进费用
  • 防伪税控服务费怎么交
  • 企业购入材料收到供货单位开具的发票
  • 外资企业再投资退税
  • 分红冲抵往来会计分录
  • 正确使用气体钢瓶的原则
  • sql的排序函数
  • mysql数据库巡检脚本
  • 如何在windows中添加字体
  • win10系统怎么设置ip地址
  • windows unistd.h
  • register.exe - register进程有什么用.是什么意思
  • Win10 TH2正式版偷偷恢复/篡改成对应的预装应用
  • linux电子邮件
  • win10在哪里更改软件大小
  • Win10预览版更新弹窗如何关闭
  • jquery 定位
  • 简述图像批处理的操作过程
  • ActivityManagerService (二)
  • 陕西省电子税务局
  • 南京税务局 局长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设