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 相关文章推荐
经典的解除许多网站无法复制文字的绝招
Dec 31 Javascript
jquery checkbox全选、取消全选实现代码
Mar 05 Javascript
分享十五个最佳jQuery 幻灯插件和教程
Mar 27 Javascript
Javascript表达式中连续的 && 和 || 之赋值区别
Oct 17 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
Apr 16 Javascript
Javascript实现代码折叠功能
Aug 25 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
Nov 22 Javascript
关于Vue实现组件信息的缓存问题
Aug 23 Javascript
了解javascript中的Dom操作
May 27 Javascript
VUE兄弟组件传值操作实例分析
Oct 26 Javascript
JS window对象简单操作完整示例
Jan 14 Javascript
vue 需求 data中的数据之间的调用操作
Aug 05 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
点评山进PR-D3L三波段收音机
2021/03/02 无线电
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
微信小程序 PHP后端form表单提交实例详解
2017/01/12 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
python求pi的方法
2014/10/08 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
django框架中间件原理与用法详解
2019/12/10 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
python各种excel写入方式的速度对比
2020/11/10 Python
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
实习生个人找工作的自我评价
2013/10/30 职场文书
采购内勤岗位职责
2013/12/10 职场文书
医院学雷锋活动策划方案
2014/02/15 职场文书
抄作业检讨书
2014/02/17 职场文书
计算机实训报告范文
2014/11/05 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
python办公自动化之excel的操作
2021/05/23 Python