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 1.0.2
Oct 11 Javascript
借助javascript代码判断网页是静态还是伪静态
May 05 Javascript
Javascript中判断对象是否为空
Jun 10 Javascript
详解JavaScript中的4种类型识别方法
Sep 14 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
Dec 03 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
Feb 13 Javascript
Angular 4依赖注入学习教程之简介(一)
Jun 04 Javascript
javascript 中select框触发事件过程的分析
Aug 01 Javascript
vue.js数据绑定操作详解
Apr 23 Javascript
基于Angularjs-router动态改变Title值的问题
Aug 30 Javascript
JavaScript中作用域链的概念及用途讲解
Aug 06 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
Mar 01 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
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
php-fpm重启导致的程序执行中断问题详解
2019/04/29 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
react build 后打包发布总结
2018/08/24 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python爬虫库scrapy简单使用实例详解
2020/02/10 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
python实现canny边缘检测
2020/09/14 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
2013英文求职信模板范文
2013/11/15 职场文书
超市创业计划书
2014/04/24 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
上诉状格式
2015/05/23 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle
MySQL分库分表详情
2021/09/25 MySQL
MySQL分区表实现按月份归类
2021/11/01 MySQL