位置: 编程技术 - 正文

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

  • 一般纳税人改成小规模纳税人
  • 内账收入按实际收到确认吗
  • 小规模进项可以收专票吗
  • 飞机票退票费如何记账
  • 企业可以采用多品牌战略吗
  • 应收债权属于非抵押吗
  • 签证费怎么支付
  • 支付给员工的讲课费税前列支怎么做?
  • 耗材如何入账
  • 签了合同没开票
  • 生产经营所得如何缴纳个人所得税
  • 单位购买的团体意外险会计分录
  • 工会没有税号怎么开普票
  • 餐饮消费,碰到商家不愿意开发票怎么办?
  • 广告费准予扣除怎么算
  • 如何确定合并报表的范围简答题
  • 纳税申报表未开票收入可以填负数吗
  • 公司用窗帘用什么颜色
  • 外资企业投资国内企业程序
  • 个税申报密码是什么意思
  • 缴纳人身意外保险凭证是什么
  • 云下载并重新安装
  • 在Win7系统中,文件的属性包括
  • 对方已经认证的红字发票怎么开
  • 企业福利费支出范围
  • 小规模公司注销流程及费用
  • php is_integer
  • 外资企业采购退税流程
  • PHP:pg_parameter_status()的用法_PostgreSQL函数
  • PHP:pg_lo_truncate()的用法_PostgreSQL函数
  • win7纯净版系统之家
  • 高温补贴计入
  • 无形资产处置收入计入
  • 小企业会计准则调整以前年度费用分录
  • 波来古市在哪里
  • 精确控制 英文
  • 装饰工程开票项目
  • photo-sphere-viewer中文文档
  • 滤波方案
  • 自动驾驶 模块
  • 卷积神经网络课程
  • 公司注册资金多好还是少好
  • 策划费多少钱
  • 增值税普通发票有什么用
  • java多线程经典案例
  • 换电脑了怎么办
  • 汇兑损益的种类
  • 用友t3怎么结转本年利润
  • sql2008用ip连接不了
  • 别人公司过账用自己的银行卡会查吗
  • 其他权益工具投资是什么意思
  • 委托代销安排的迹象有哪些
  • 待转销项税借方余额是什么意思
  • 月末需要做的会计分录
  • 如何冲其他应付款发票
  • 企业对外借款是什么意思
  • 补交上年度的企业所得税税款计入什么科目
  • 基本生产成本和生产成本
  • 怎样查企业注册地址
  • 前一年的未分配利润计算
  • 公司不做账会怎样?
  • MS-SQL Server 2005 其中三个版本的比较
  • sqlserver日期计算年龄
  • windows命令行修改密码
  • aliwssv.exe是什么进程
  • Linux系统怎么用梯子
  • win10不支持win7软件怎么办
  • perl匹配空行
  • js兼容ie
  • python中类怎么用
  • javascript数组去重set方法
  • js控制style
  • 事件绑定js
  • Android spinner 的使用
  • Unity3D游戏开发(第2版)
  • html读书笔记
  • jquery数组的方法
  • 客户端名称 android-
  • 一般纳税人申请资格条件
  • 电子税务局网上登录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设