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 相关文章推荐
List Installed Hot Fixes
Jun 12 Javascript
JavaScript表单常用验证集合
Jan 16 Javascript
js计算精度问题小结
Apr 22 Javascript
js获取或设置当前窗口url参数的小例子
Oct 14 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
Dec 20 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
Apr 14 Javascript
JavaScript操作Cookie方法实例分析
May 27 Javascript
javascript正则表达式之分组概念与用法实例
Jun 16 Javascript
Angular的自定义指令以及实例
Dec 26 Javascript
浅谈Angular4中常用管道
Sep 27 Javascript
详解JavaScript修改注册表的方法
Jan 05 Javascript
JS原生实现轮播图的几种方法
Mar 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实现ping
2006/10/09 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
javascript每日必学之循环
2016/02/19 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
Python实现线程状态监测简单示例
2018/03/28 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
python字符串格式化方式解析
2019/10/19 Python
用python批量下载apk
2020/12/29 Python
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
运动会解说词100字
2014/01/31 职场文书
给孩子的新年寄语
2014/04/08 职场文书
保护母亲河倡议书
2014/04/14 职场文书
网吧温馨提示
2015/07/17 职场文书
追悼会家属答谢词
2015/09/29 职场文书
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
Python字符串的转义字符
2022/04/07 Python