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 相关文章推荐
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
Aug 04 Javascript
js判断设备是否为PC并调整图片大小
Feb 12 Javascript
jquery使用jxl插件导出excel示例
Apr 14 Javascript
jQuery增加与删除table列的方法
Mar 01 Javascript
jQuery简单实现仿京东分类导航层效果
Jun 07 Javascript
Google 地图API Map()构造器详解
Aug 06 Javascript
vue双向数据绑定知识点总结
Apr 18 Javascript
VueJS 取得 URL 参数值的方法
Jul 19 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
Jul 19 Javascript
js实现树形数据转成扁平数据的方法示例
Feb 27 Javascript
JavaScript架构localStorage特殊场景下二次封装操作
Jun 21 Javascript
JavaScript实现九宫格拖拽效果
Jun 28 Javascript
checkbox:click事件触发span元素内容改变的方法
Sep 11 #Javascript
Node.js 使用流实现读写同步边读边写功能
Sep 11 #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
You might like
摩卡咖啡
2021/03/03 咖啡文化
使用Sphinx对索引进行搜索
2013/06/25 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
js类式继承与原型式继承详解
2016/04/07 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
几种响应式文字详解
2017/05/19 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
vue实现验证用户名是否可用
2021/01/20 Vue.js
详解C++编程中一元运算符的重载
2016/01/19 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
python中的随机函数random的用法示例
2018/01/27 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
职工代表大会主持词
2014/04/01 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
2014年学校工作总结
2014/11/20 职场文书
环保建议书作文400字
2015/09/14 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书