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制作的放大效果的popup对话框(未添加任何jquery plugin)分享
Apr 28 Javascript
基于OL2实现百度地图ABCD marker的效果
Oct 01 Javascript
AngularJS 实现按需异步加载实例代码
Oct 18 Javascript
JavaScript引用类型和基本类型详解
Jan 06 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
Jun 06 Javascript
使用Fullpage插件快速开发整屏翻页的页面
Sep 13 Javascript
js实现移动端tab切换时下划线滑动效果
Sep 08 Javascript
改变layer confirm弹窗按钮的颜色方法
Sep 12 Javascript
vue控制多行文字展开收起的实现示例
Oct 11 Javascript
JS实现百度搜索框关键字推荐
Feb 17 Javascript
基于js判断浏览器是否支持webGL
Apr 18 Javascript
Nest.js 授权验证的方法示例
Feb 22 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与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
PHP访问Google Search API的方法
2015/03/05 PHP
php封装的smarty类完整实例
2016/10/19 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
python多线程编程方式分析示例详解
2013/12/06 Python
python设置检查点简单实现代码
2014/07/01 Python
python字符串排序方法
2014/08/29 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
python求最大值最小值方法总结
2019/06/25 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
Python实现把类当做字典来访问
2019/12/16 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
2014教师党员自我评议(5篇)
2014/09/20 职场文书
介绍信格式
2015/01/30 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
贷款收入证明格式
2015/06/24 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers