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 EXCEL 操作类代码
Jul 30 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
Jul 08 Javascript
javascript验证只能输入数字和一个小数点示例
Oct 21 Javascript
javascript创建createXmlHttpRequest对象示例代码
Feb 10 Javascript
让angularjs支持浏览器自动填表
Nov 10 Javascript
在Html中使用Requirejs进行模块化开发实例详解
Apr 15 Javascript
AngularJS 指令详细介绍
Jul 27 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
Mar 24 jQuery
JavaScript中防止微信浏览器被整体拖动的方法
Aug 25 Javascript
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 jQuery
vue缓存的keepalive页面刷新数据的方法
Apr 23 Javascript
使用异步组件优化Vue应用程序的性能
Apr 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
推荐文章系统(一)
2006/10/09 PHP
zend framework多模块多布局配置
2011/02/26 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
关于PHP递归算法和应用方法介绍
2013/04/15 PHP
详解php实现页面静态化原理
2017/06/21 PHP
PHP 8新特性简介
2020/08/18 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
JavaScript delete 属性的使用
2009/10/08 Javascript
javascript+mapbar实现地图定位
2010/04/09 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
wxPython窗口的继承机制实例分析
2014/09/28 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
python plotly画柱状图代码实例
2019/12/13 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
django实现日志按日期分割
2020/05/21 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
物流管理专业职业生涯规划书
2014/01/06 职场文书
中国好声音广告词
2014/03/18 职场文书
银行奉献演讲稿
2014/09/16 职场文书
科学育儿宣传标语
2014/10/08 职场文书
授权委托书
2015/01/28 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis