位置: 编程技术 - 正文

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

  • 预缴税款是什么科目
  • 个人开票的抬头怎么写
  • 油费补贴计入什么科目
  • 财务方面的管理思想
  • 广告公司可以开劳务费吗
  • 蓝字发票作废流程视频
  • 收到电费发票做账摘要怎么写
  • 前程无忧靠什么赚钱
  • 库存商品未入库
  • 房地产未确认收入情况说明
  • 劳务分包异地用预缴税款吗?
  • 没有订立合同的著作权属于什么人
  • 增值税专用发票抵扣最新规定
  • 营改增后利息收入交什么税
  • 物流企业的大宗商品仓储用地是什么意思
  • 建筑劳务公司开发票
  • 小规模企业增值税账务处理
  • 背书转让后的电子承兑怎么打印
  • 销项税月底还是年底结0
  • 非营利组织免税收入孳生的银行存款利息
  • 发票已认证次月冲红
  • 总资产收益率什么意思
  • php基础函数
  • 在php中,字符串有哪些表示形式
  • 在php中,字符串有哪些表示形式
  • 增值税进项税抵扣销项税
  • 若依框架好用吗
  • PHP:image_type_to_extension()的用法_GD库图像处理函数
  • 工程项目科目如何设置
  • 前端播放视频的插件
  • vueity
  • 微信小程序游戏手游排行榜
  • span标签中的字符串怎么获取
  • 造孽啊啥意思
  • 事业单位新会计制度固定资产
  • discuz安装使用教程
  • 暂估入库以及暂估的区别
  • 飞机票电子发票能报销吗
  • 外汇核销是什么意思
  • 电商会计如何做账
  • 未交增值税借方余额怎么调整
  • 劳务报酬的个人所得税
  • 开外经证时需要马上交税吗
  • MSSQL2005在networkservice权限运行附加数据库报(Microsoft SQL Server,错误: 5120)
  • sqlserver2008数据迁移
  • 小规模企业免税收入会计分录
  • 企业增值税征收范围
  • 建筑服务预征缴纳税款期初余额怎么算
  • 商业保险如何做伤残鉴定的
  • 实收资本账务处理流程
  • 样机 研发费用归集与核算
  • 产品包装设计费属什么费用
  • 银行扣款能撤回吗
  • 一次性伤残就业补助金有时间限制吗
  • 应收票据背书支付是什么
  • 免征增值税账务处理办法
  • 未分配利润核销不良贷款
  • 网络管理费用
  • 备用金取多少钱会被监控
  • 一般纳税人弱电包工包料怎么开票
  • 融资租赁公司收费标准
  • 库存数据不准确
  • 电脑bios找不到硬盘怎么办
  • windows xp的设备管理器在哪
  • windows7无法进入睡眠
  • freebsd 配置ip
  • 没有系统盘怎么修复系统
  • win 8系统怎么样
  • 电脑怎么连接上隐形wi
  • perl教程 pdf
  • Android游戏开发教程
  • 使用二氧化碳灭火器时人应该站在什么位置
  • node.js读取文件的三种方式
  • python中判断语句怎么写
  • jQuery中通过ajax调用webservice传递数组参数的问题实例详解
  • 重庆税务稽查局地址
  • 非正常户解除申请理由
  • 税务ukey登录界面
  • 加油的增值税发票可以抵扣吗
  • 幼儿掌握概念的名称容易真正掌握概念的内涵也很容易
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设