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简单图表peity.js使用示例
May 02 Javascript
js全选实现和判断是否有复选框选中的方法
Feb 17 Javascript
javascript验证身份证号
Mar 03 Javascript
jQuery使用addClass()方法给元素添加多个class样式
Mar 26 Javascript
js实现的早期滑动门菜单效果代码
Aug 27 Javascript
JS基于面向对象实现的拖拽库实例
Sep 24 Javascript
基于JavaScript代码实现随机漂浮图片广告
Jan 05 Javascript
Bootstrap每天必学之导航条(二)
Mar 01 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
May 27 Javascript
浅谈js算法和流程控制
Dec 29 Javascript
vue封装第三方插件并发布到npm的方法
Sep 25 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
May 08 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在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
php实现的RSS生成类实例
2015/04/23 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
通过隐藏option实现select的联动效果
2009/11/10 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
ES6的新特性概览
2016/03/10 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
Python字典实现简单的三级菜单(实例讲解)
2017/07/31 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
Python requests设置代理的方法步骤
2020/02/23 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
公司年会策划方案
2014/05/17 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers