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 相关文章推荐
struts2 jquery 打造无限层次的树
Oct 23 Javascript
详谈 Jquery Ajax异步处理Json数据.
Sep 09 Javascript
jquery无法设置checkbox选中即没有变成选中状态
Mar 27 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
Jun 06 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
Feb 17 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
Sep 26 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
Oct 16 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
Apr 21 jQuery
详解webpack es6 to es5支持配置
May 04 Javascript
jquery中有哪些api jQuery主要API
Nov 20 jQuery
详解JavaScript自定义函数
Jul 29 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
Aug 07 Javascript
checkbox:click事件触发span元素内容改变的方法
Sep 11 #Javascript
Node.js 使用流实现读写同步边读边写功能
Sep 11 #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
You might like
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
php下删除一篇文章生成的多个静态页面
2010/08/08 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
PHP常用处理静态操作类
2015/04/03 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
2016/01/08 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
laravel入门知识点整理
2020/09/15 PHP
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
javascript模块化简单解析
2016/04/07 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
详细探究Python中的字典容器
2015/04/14 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
终端业务员岗位职责
2013/11/27 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
学校工会工作总结2015
2015/05/19 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers