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 相关文章推荐
JavaScript 未结束的字符串常量常见解决方法
Jan 24 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
Nov 05 Javascript
js中格式化日期时间型数据函数代码
Nov 08 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
Jan 03 Javascript
JavaScript获得表单target属性的方法
Apr 02 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
Jan 25 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
Apr 01 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
Jan 12 Javascript
vue select组件的使用与禁用实现代码
Apr 10 Javascript
JS实现图片旋转动画效果封装与使用示例
Jul 09 Javascript
脚手架vue-cli工程webpack的基本用法详解
Sep 29 Javascript
微信小程序实现顶部下拉菜单栏
Nov 04 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
paypal即时到账php实现代码
2010/11/28 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
分享PHP守护进程类
2015/12/30 PHP
PHP图片加水印实现方法
2016/05/06 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
JScript中的"this"关键字使用方式补充材料
2007/03/08 Javascript
运算符&&的三个不同层次
2013/04/07 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
React Router v4 入坑指南(小结)
2018/04/08 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
python之PyMongo使用总结
2017/05/26 Python
python最长回文串算法
2018/06/04 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
python爬虫要用到的库总结
2020/07/28 Python
Css3圆角边框制作代码
2015/11/18 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
船舶专业个人求职信范文
2014/01/02 职场文书
工作会议欢迎词
2014/01/16 职场文书
四年级下册教学反思
2014/02/01 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
国企干部对照检查材料
2014/08/22 职场文书
十八大标语口号
2014/10/09 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书