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 new后的constructor属性
Aug 05 Javascript
jQuery代码优化之基本事件
Nov 01 Javascript
浅析webapp框架AngularUI的demo
Dec 21 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
Aug 21 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
Nov 01 Javascript
老生常谈javascript的面向对象思想
Aug 22 Javascript
分析JS中this引发的bug
Dec 12 Javascript
小程序图片长按识别功能的实现方法
Aug 30 Javascript
layui form表单提交之后重新加载数据表格的方法
Sep 11 Javascript
JS多个异步请求 按顺序执行next实现解析
Sep 16 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
May 12 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
PHP 转义使用详解
2013/07/15 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
php实现网页端验证码功能
2017/07/11 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
使用JS读秒使用示例
2013/09/21 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
jQuery实现折叠、展开的菜单组效果代码
2015/09/16 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
python创建线程示例
2014/05/06 Python
Python中为什么要用self探讨
2015/04/14 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
python2和python3哪个使用率高
2020/06/23 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
2014年两会学习心得范例
2014/03/17 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
百年校庆感言
2015/08/01 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
导游词之凤凰古城
2019/10/22 职场文书
python删除csv文件的行列
2021/04/06 Python
python 解决微分方程的操作(数值解法)
2021/05/26 Python
Win11如何默认打开软件界面最大化?Win11默认打开软件界面最大化的方法
2022/07/15 数码科技