位置: 编程技术 - 正文

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

  • 外购商品结转成本分录
  • 工资走账是什么意思
  • 实缴资本需要存放多久
  • 待处理财产损益年底怎么处理
  • 劳务报酬自行申报时间
  • 大病医疗保险能税前扣除吗
  • 货运代理公司排名前十
  • 个人工资税收怎么申报
  • 该企业本月发生如下经济业务
  • 银行卡季度结息
  • 航天金穗服务费抵扣
  • 证券公司转让价格
  • 公司为什么要成立工会委员会
  • 工资五险一金和税怎么处理
  • 减免所得税怎么算税率
  • 会议费增值税专用发票税率
  • 工程款发票遗失怎么处理
  • 营改增后一般纳税人动产租赁税率
  • 增值税税率如何计算
  • 企业转让二手房增值税
  • 应付职工薪酬计入现金流量表哪里
  • 对公账户上扣缴的税怎么做分录?
  • 金蝶的币别和汇率怎么取消
  • 企业所得税税率2.5% 5% 25%
  • 投资性房地产的后续计量从成本模式转为公允价值模式的
  • 穿越火线封号查询官网
  • 应交税金年终怎么计算
  • 上市公司的组织形式
  • 鸿蒙系统怎么隐藏状态栏
  • 微信php开发包
  • PHP中set error handler函数用法小结
  • remind32.exe - remind32是什么进程 有什么用
  • 代金券消费怎么做分录
  • echarts w3c
  • 公司为什么每年都要招人
  • NJeeves.exe - NJeeves进程文件是什么意思 有什么用
  • 电脑开机按f8出现please select
  • 企业年金缴纳标准400什么意思啊
  • 税务 终结执行
  • 企业合并支付的资产评估费计入
  • php gd gd2
  • php调用其他php函数
  • Yii2 assets清除缓存的方法
  • 计算机视觉需要学什么
  • yii2实现根据时间搜索的方法
  • php中foreach循环遍历数组
  • 研发支出的相关理论基础有哪些
  • mysql主从同步的优点
  • php门户cms
  • 公司购买办公家具可以抵扣吗
  • 利用职务之便谋取私利是什么罪
  • 应收款需要平行公司吗
  • 固定资产的货币资金包括
  • 环保税计税依据怎么算
  • sql2008服务器
  • sql server 2014删除
  • 使用XQuery查询DB2 XML数据
  • 未确认融资费用账务处理
  • 关于预付账款的说法正确的有
  • 收到税务局退回的增值税税款怎么做账
  • 增值税科目设置成多栏式还是三栏式好
  • 安装sql server 2008硬件要求
  • mysql日期用什么数据类型
  • sql合并多条记录某一个字段
  • instmsiw.exe进程简介
  • centos7打开
  • linux的命令行界面
  • win7连接投屏器
  • unity中
  • js下拉列表框
  • 通过Tabs方法基于easyUI+bootstrap制作工作站
  • js应用实例
  • 简述jquery的优势
  • php 时间差
  • Python第三方库的常见安装方法有
  • 地税税号查询系统
  • 未缴税税务说明书
  • 全面推进行政执法公示制度包含的主要内容有
  • 继承房产过户后可以要求分割吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设