位置: 编程技术 - 正文

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

  • 税控盘抵扣税款
  • 报废固定资产可以收定金吗合法吗
  • 社保退回来的钱怎么做账
  • 用银行支付本月生产车间保险费820元
  • 专项附加扣除项目的6项具体规定有哪些
  • 金银首饰在哪个平台买比较好
  • 进口代收业务
  • 契税的计税金额是什么
  • 营业外支出计入
  • 资产负债表最后要平吗
  • 企业收到非金融机构利息收入怎么做账务处理
  • 金税盘减免税额
  • 研发支出费用化支出每个月都要结转吗
  • 营业外支出税前可以扣除吗
  • 开出密码区的普票能入账吗?
  • 无票费用如何做凭证分录
  • 记账凭证的分类和基本内容
  • 免税和退税的区别出口企业
  • 信汇凭证是转账凭证吗
  • 人均营收指标
  • 个税申报需要补税是什么情况
  • 房子报废
  • 公司作为二房东怎么给别人开发票
  • 一家公司各项费用支出
  • 农民合作社扶持政策
  • 印花税需要哪些部门核准
  • 对方开红票需要寄给我吗
  • 工会经费的计税依据包括劳务费吗
  • 物业公司给业主的生日祝福
  • php制作一个表单
  • java开发主流框架
  • php中字符串函数
  • 企业注销时无力缴纳社保
  • 如何设置路由器步骤要详细
  • 苹果手机麦克风模式关闭了,怎样才能打开?
  • win7命令行模式
  • php preg_quote
  • phpexcel插件
  • 小企业会计准则调整以前年度费用分录
  • 非上市公司股票期权个人所得税
  • 期末应交增值税转入未交增值税
  • 私人医院需要缴纳哪些税费
  • 计算机视觉算法
  • 公司迁移到外省 税务局需要注销吗
  • ulimit设置不生效
  • wordpress小工具开发
  • 待认证进项税额是二级科目还是三级科目
  • 公司还款给个人怎么操作
  • oracle与mysql的优缺点对比
  • 股权激励和期权激励
  • 企业收到财政拨付的专项资金账务处理
  • 开票信息修改
  • 科技型中小企业享受优惠税收政策
  • 兼职工资比正式工的工资高还是低
  • 直接材料成本总差异怎么算
  • 缴纳社保公积金的会计分录
  • 润滑油消费税计算公式
  • 暂估入库的商品作暂估冲红会计分录
  • 公司购买的公司用车
  • 无法支付其他应付款核销条件
  • 招标付款条件及比例
  • mysql 表分区
  • 进入pe系统后c盘变成了e盘
  • macbookair cpu
  • edge以ie
  • win8.1应用商店无法连接网络
  • win10预览模式
  • cocoscreator lua
  • 用jQuery实现可输入多选下拉组合框实例代码
  • linux怎么调用python
  • table标签怎么设置宽高
  • unityxlua热更新方案
  • jquery弹出div窗口
  • jquery模拟回车
  • Android之Async-http
  • python怎么发送
  • java教程csdn
  • 地税局书记是什么级别
  • 小规模纳税人开专票
  • 天津普通发票查询平台
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设