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 相关文章推荐
捕获关闭窗口的脚本
Jan 10 Javascript
javascript URL编码和解码使用说明
Apr 12 Javascript
基于Jquery的温度计动画效果
Jun 18 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
Apr 27 Javascript
js模拟淘宝网的多级选择菜单实现方法
Aug 18 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
Sep 19 Javascript
jQuery插件zTree实现删除树子节点的方法示例
Mar 08 Javascript
node.js中EJS 模板快速入门教程
May 08 Javascript
IE8中jQuery.load()加载页面不显示的原因
Nov 15 jQuery
微信小程序实现收货地址左滑删除
Nov 18 Javascript
深入详解JS函数的柯里化
Jun 09 Javascript
三种方式清除vue路由跳转router-link的历史记录
Apr 10 Vue.js
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
360通用php防护代码(使用操作详解)
2013/06/18 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
accesskey 提交
2006/06/26 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
js实现车辆管理系统
2020/08/26 Javascript
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
Python内置函数OCT详解
2016/11/09 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
python实现简易学生信息管理系统
2020/04/05 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
传播学专业毕业生自荐信
2013/11/04 职场文书
天地会口号
2014/06/17 职场文书
路政管理求职信
2014/06/18 职场文书
万能检讨书2000字
2014/10/17 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
预备党员入党感言
2015/08/01 职场文书
2015年度女工工作总结
2015/10/22 职场文书
2016教师学习教育法心得体会
2016/01/19 职场文书
python glom模块的使用简介
2021/04/13 Python
Python 内置函数速查表一览
2021/06/02 Python
详解Oracle块修改跟踪功能
2021/11/07 Oracle
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android