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的获取浏览器窗口大小的代码
Mar 28 Javascript
自己编写的支持Ajax验证的JS表单验证插件
May 15 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
Sep 26 Javascript
全面理解JavaScript中的继承(必看)
Jun 16 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
Nov 18 Javascript
JavaScript 数据类型详解
Mar 13 Javascript
JS和canvas实现俄罗斯方块
Mar 14 Javascript
详解angularjs的数组传参方式的简单实现
Jul 28 Javascript
微信小程序视图template模板引用的实例详解
Sep 20 Javascript
JavaScript fetch接口案例解析
Aug 30 Javascript
antd Select下拉菜单动态添加option里的内容操作
Nov 02 Javascript
JavaScript 绘制饼图的示例
Feb 19 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
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
[02:20]2014DOTA2西雅图邀请赛 MVP外卡赛首胜采访
2014/07/09 DOTA
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python提取内容关键词的方法
2015/03/16 Python
Python中用于返回绝对值的abs()方法
2015/05/14 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
美国鞋类购物网站:Shiekh Shoes
2016/08/21 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
临床医学专业毕业生的自我评价
2013/10/17 职场文书
毕业生自荐书模版
2014/01/04 职场文书
企业宣传口号
2014/06/12 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
优秀英文求职信范文
2015/03/19 职场文书
python实现简单的名片管理系统
2021/04/26 Python
PHP实现两种排课方式
2021/06/26 PHP