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 相关文章推荐
入门基础学习 ExtJS笔记(一)
Nov 11 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
Apr 07 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
Apr 22 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
May 07 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
Dec 16 Javascript
jQuery老黄历完整实现方法
Jan 16 Javascript
javascript中的Base64、UTF8编码与解码详解
Mar 18 Javascript
Bootstrap Table使用方法详解
Aug 01 Javascript
jQuery EasyUi 验证功能实例解析
Jan 06 Javascript
JS实现移动端双指缩放和旋转方法
Dec 13 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
May 19 Javascript
你不知道的 TypeScript 高级类型(小结)
Aug 28 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源码之 ext/mysql扩展部分
2009/07/17 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
python使用pil生成缩略图的方法
2015/03/26 Python
详解Python字典的操作
2019/03/04 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
python求平均数、方差、中位数的例子
2019/08/22 Python
Python实现把类当做字典来访问
2019/12/16 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
Python修改DBF文件指定列
2020/12/19 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
科室工作个人总结的自我评价
2013/10/29 职场文书
公司活动策划方案
2014/01/13 职场文书
物流管理专业毕业生自荐信
2014/03/04 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python