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类中获取外部函数名的方法与代码
Sep 12 Javascript
jquery 多级下拉菜单核心代码
May 21 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
Jun 10 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
Jun 26 Javascript
基于jQuery实现复选框是否选中进行答题提示
Dec 10 Javascript
jQuery联动日历的实例解析
Dec 02 Javascript
浅谈Vue SPA 首屏加载优化实践
Dec 15 Javascript
vue和iview实现Scroll 数据无限滚动功能
Oct 31 Javascript
vue element-ui读取pdf文件的方法
Nov 26 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
Feb 13 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
May 03 Javascript
JavaScript组合设计模式--改进引入案例分析
May 23 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数据库连接类~~做成一个分页类!
2006/11/25 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
python提示No module named images的解决方法
2014/09/29 Python
python利用不到一百行代码实现一个小siri
2017/03/02 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
django中cookiecutter的使用教程
2020/12/03 Python
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
自荐信格式简述
2014/01/25 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
离婚协议书范文2014
2014/10/16 职场文书
刘公岛导游词
2015/02/05 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python