Node.js 使用流实现读写同步边读边写功能


Posted in Javascript onSeptember 11, 2017

废话不多说了,直接给大家贴代码了,具体代码如下所示:

//10个数 10个字节,每次读4b,写1b
let fs=require("fs");
function pipe(source,target) {
  //先创建可读流,再创建可写流
  //先读一次,rs.on(data)
  //将读到的类容写入目标中 ,返回布尔值,如果是ture,继续写,默认情况应该是false,暂停读取
  //ws.on('drain'),抽干后,回复读取
  //监听读取文件完毕后,关闭读取rs.on('end')
  let rs=fs.createReadStream(source,{highWaterMark:4});
  let ws=fs.createWriteStream(target,{highWaterMark:1});
  rs.on('data',function (chunk) { //chunk是buffer类型
    if(ws.write(chunk)===false){
      //写不下,停止读取
      rs.pause()
    }
  });
  ws.on('drain',function () {
    //每次写的内存干了就恢复读取
    console.log("111");
    rs.resume() //恢复读取
  });
  rs.on('end',function (chunk) {
    ws.end();
  })
}
pipe('./1.txt','./3.txt')

上面这种写法比较繁琐,大家看完后,忘记就行

node.js提供给我们内置方法pipe

//10个数 10个字节,每次读4b,写1b
let fs=require("fs");
function pipe(source,target) {
  let rs=fs.createReadStream(source,{highWaterMark:4});
  let ws=fs.createWriteStream(target,{highWaterMark:1});
  //可读流到可写流,异步操作,可以保证内存不会被淹没,读一点,写一点
  // 如果想看文件类容,使用readFile

  rs.pipe(ws);
}
pipe('./1.txt','./4.txt')

直接将读取的流操作到写入流中,还是异步操作

总结

以上所述是小编给大家介绍的Node.js 使用流实现读写同步边读边写功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery 版元素拖拽原型代码
Apr 25 Javascript
Javascript中自动切换焦点实现代码
Dec 15 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
Aug 27 Javascript
Javascript中Event属性搜集整理
Sep 17 Javascript
js对字符的验证方法汇总
Feb 04 Javascript
jQuery制作仿Mac Lion OS滚动条效果
Feb 10 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
Jul 18 Javascript
浅析AngularJs HTTP响应拦截器
Dec 28 Javascript
js学习阶段总结(必看篇)
Jun 16 Javascript
Koa项目搭建过程详细记录
Apr 12 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
Jun 01 Javascript
微信小程序如何播放腾讯视频的实现
Sep 20 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
Sep 11 #Javascript
简单谈谈JS中的正则表达式
Sep 11 #Javascript
详解Vue双向数据绑定原理解析
Sep 11 #Javascript
基于DOM节点删除之empty和remove的区别(详解)
Sep 11 #Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
Sep 11 #Javascript
基于bootstrop常用类总结(推荐)
Sep 11 #Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 #jQuery
You might like
用PHP查询搜索引擎排名位置的代码
2010/01/05 PHP
PHP 面向对象详解
2012/09/13 PHP
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
Django def clean()函数对表单中的数据进行验证操作
2020/07/09 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
python 6行代码制作月历生成器
2020/09/18 Python
Python+unittest+requests 接口自动化测试框架搭建教程
2020/10/09 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
法律工作求职自荐信
2013/10/31 职场文书
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
班班通校本培训方案
2014/03/12 职场文书
小学生运动会报道稿
2014/09/12 职场文书
个人优缺点总结
2015/02/28 职场文书
工作简报怎么写
2015/07/21 职场文书
清明节随笔
2015/08/15 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL