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 相关文章推荐
onpropertypchange
Jul 01 Javascript
javascript JSON操作入门实例
Apr 16 Javascript
javascript与有限状态机详解
May 08 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
Sep 10 Javascript
在Javascript中处理字符串之big()方法的使用
Jun 08 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
Jun 12 Javascript
详解vue事件对象、冒泡、阻止默认行为
Mar 20 Javascript
微信小程序中多个页面传参通信的学习与实践
May 05 Javascript
js实现复制功能(多种方法集合)
Jan 06 Javascript
jQuery替换节点元素的操作方法
Mar 18 jQuery
vue中选项卡点击切换且能滑动切换功能的实现代码
Nov 25 Javascript
js笔试题-接收get请求参数
Jun 15 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
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
百度地图API使用方法详解
2015/08/25 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
react+redux的升级版todoList的实现
2017/12/18 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
Django自定义分页与bootstrap分页结合
2021/02/22 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
详解python 内存优化
2020/08/17 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
经济信息管理专业大学生求职信
2013/09/27 职场文书
高中生学习的自我评价
2013/12/14 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python