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中的parseInt和parseFloat区别
Jul 12 Javascript
JSP跨iframe如何传递参数实现代码
Sep 21 Javascript
引用 js在IE与FF之间的区别详细解析
Nov 20 Javascript
JS按字节截取字符长度实例
Nov 20 Javascript
用jquery修复在iframe下的页面锚点失效问题
Aug 22 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
Dec 29 Javascript
JavaScript每天定时更换皮肤样式的方法
Jul 01 Javascript
详解js图片轮播效果实现原理
Dec 17 Javascript
AngularJS入门教程之表格实例详解
Jul 27 Javascript
vue 子组件修改data或调用操作
Aug 07 Javascript
nginx部署多个vue项目的方法示例
Sep 06 Javascript
原生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
php mssql 日期出现中文字符的解决方法
2009/03/10 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
在Python中移动目录结构的方法
2016/01/31 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
python数据结构之链表详解
2017/09/12 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
Python使用Matlab命令过程解析
2020/06/04 Python
详解Python 函数参数的拆解
2020/09/02 Python
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
节能宣传周活动总结
2014/05/08 职场文书
父亲节活动总结
2015/02/12 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
小学生手册家长意见
2015/06/03 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
Python基础之hashlib模块详解
2021/05/06 Python