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 Prototype对象
Jan 07 Javascript
JavaScript OOP面向对象介绍
Dec 02 Javascript
jquery三个关闭弹出层的小示例
Nov 05 Javascript
在AngularJS框架中处理数据建模的方式解析
Mar 05 Javascript
javascript 分号总结及详细介绍
Sep 24 Javascript
Centos7 中 Node.js安装简单方法
Nov 02 Javascript
Vue.js对象转换实例
Jun 07 Javascript
JavaScript算法教程之sku(库存量单位)详解
Jun 29 Javascript
Javascript实现时间倒计时功能
Nov 17 Javascript
微信小程序Flex布局用法深入浅出分析
Apr 25 Javascript
Vue安装浏览器开发工具的步骤详解
May 12 Javascript
关于angular引入ng-zorro的问题浅析
Sep 09 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
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
php 地区分类排序算法
2013/07/01 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
javascript add event remove event
2008/04/07 Javascript
Google Map Api和GOOGLE Search Api整合实现代码
2009/07/18 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
JS中表单的使用小结
2014/01/11 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
Python colormap库的安装和使用详情
2020/10/06 Python
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
历史专业个人求职信范文
2013/12/07 职场文书
企业承诺书怎么写
2014/05/24 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
gojs实现蚂蚁线动画效果
2022/02/18 Javascript
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android