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实现每个数字上都带进度条的幻灯片
Feb 20 Javascript
Jquery动态改变图片IMG的src地址示例
Jun 25 Javascript
js跨域访问示例(客户端/服务端)
May 19 Javascript
EasyUI学习之Combobox级联下拉列表(2)
Dec 29 Javascript
js oncontextmenu事件使用详解
Mar 25 Javascript
JS中关于正则的巧妙操作
Aug 31 Javascript
快速搭建vue2.0+boostrap项目的方法
Apr 09 Javascript
vue实现重置表单信息为空的方法
Sep 29 Javascript
使用layer模态框给新页面传值的方法
Sep 27 Javascript
Element InputNumber 计数器的实现示例
Aug 03 Javascript
Bootstrap FileInput实现图片上传功能
Jan 28 Javascript
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
PHP中计算字符串相似度的函数代码
2012/12/29 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
python list 合并连接字符串的方法
2013/03/09 Python
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
讲解Python中if语句的嵌套用法
2015/05/14 Python
Python中用max()方法求最大值的介绍
2015/05/15 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
python中的lambda表达式用法详解
2016/06/22 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
python飞机大战游戏实例讲解
2020/12/04 Python
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
导游实习生自荐书
2014/01/28 职场文书
公司承诺书格式
2014/05/21 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
企业党建工作总结2015
2015/05/26 职场文书
python标准库ElementTree处理xml
2022/05/20 Python
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server