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 checkbox,radio是否选中的判断代码
Mar 20 Javascript
js有序数组的连接问题
Oct 01 Javascript
Javascript Objects详解
Sep 04 Javascript
JavaScript修改浏览器tab标题小技巧
Jan 06 Javascript
JavaScript中exec函数用法实例分析
Jun 08 Javascript
AngularJS之自定义服务详解(factory、service、provider)
Apr 14 Javascript
layer弹出层父子页面事件相互调用方法
Aug 17 Javascript
JS实现动态添加外部js、css到head标签的方法
Jun 05 Javascript
vue.js 2.0实现简单分页效果
Jul 29 Javascript
微信小程序手动添加收货地址省市区联动
May 18 Javascript
Vue-cli4 配置 element-ui 按需引入操作
Sep 11 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
Nov 13 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
基于bootstrop常用类总结(推荐)
Sep 11 #Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 #jQuery
You might like
php输出1000以内质数(素数)示例
2014/02/16 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
Javascript倒计时代码
2010/08/12 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
了解JavaScript中的选择器
2019/05/24 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
[06:36]吞吞映像top1
2014/06/20 DOTA
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
深入浅析Python的类
2018/06/22 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
美国专业级皮肤病和spa品质护肤品的高级零售网站:SkinCareRx
2017/02/06 全球购物
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
毕业生动漫设计求职信
2013/10/11 职场文书
主持人演讲稿范文
2013/12/28 职场文书
小学家长评语大全
2014/04/16 职场文书
环保倡议书格式范文
2014/05/14 职场文书
监督检查工作方案
2014/05/28 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
2014年医院工作总结
2014/11/20 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python
Python实现简单得递归下降Parser
2022/05/02 Python