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 相关文章推荐
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
Apr 28 Javascript
Jquery对数组的操作技巧整理
Mar 25 Javascript
JavaScript中Date.toSource()方法的使用教程
Jun 12 Javascript
JS实现仿微博可关闭弹出层效果
Sep 21 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
Oct 23 Javascript
使用vue编写一个点击数字计时小游戏
Aug 31 Javascript
JS实现间歇滚动的运动效果实例
Dec 22 Javascript
Vue 项目代理设置的优化
Apr 17 Javascript
浅析Vue 生命周期
Jun 21 Javascript
在vue中使用echarts图表实例代码详解
Oct 22 Javascript
浅谈Express.js解析Post数据类型的正确姿势
May 30 Javascript
小程序实现图片移动缩放效果
May 26 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 session
2013/10/28 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
PHP多进程编程实例详解
2017/07/19 PHP
JavaScript Accessor实现说明
2010/12/06 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
[01:25]DOTA2超级联赛专访iG 将调整状态找回自己
2013/06/05 DOTA
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
Python中使用partial改变方法默认参数实例
2015/04/28 Python
解析Python中while true的使用
2015/10/13 Python
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
django的登录注册系统的示例代码
2018/05/14 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
python爬虫之自制英汉字典
2019/06/24 Python
python time()的实例用法
2020/11/03 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
单位领导证婚词
2014/01/14 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
售房委托书
2014/08/30 职场文书
专职安全员岗位职责
2015/04/11 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
社区干部培训心得体会
2016/01/06 职场文书
话题作文之呼唤
2019/12/18 职场文书
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
HTML基础详解(下)
2021/10/16 HTML / CSS
golang实现浏览器导出excel文件功能
2022/03/25 Golang