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 $.ajax相关用法分享
Mar 16 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
Nov 22 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
关闭页面window.location事件未执行的原因及解决方法
Sep 01 Javascript
js树插件zTree获取所有选中节点数据的方法
Jan 28 Javascript
js中日期的加减法
May 06 Javascript
jQuery插件jRumble实现网页元素抖动
Jun 05 Javascript
浅析Javascript的自动分号插入(ASI)机制
Sep 29 Javascript
利用JS如何计算字符串所占字节数示例代码
Sep 13 Javascript
仿淘宝JSsearch搜索下拉深度用法
Jan 15 Javascript
使用axios请求时,发送formData请求的示例
Oct 29 Javascript
JavaScript this关键字的深入详解
Jan 14 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合并静态文件详解
2014/11/14 PHP
PHP进程同步代码实例
2015/02/12 PHP
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
vue中appear的用法
2017/08/17 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
Node 升级到最新稳定版的方法分享
2018/05/17 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
JS实现百度搜索框
2021/02/25 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
Python内存管理实例分析
2019/07/10 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
Python项目跨域问题解决方案
2020/06/22 Python
详解Python 函数参数的拆解
2020/09/02 Python
python Tornado框架的使用示例
2020/10/19 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
给校长的建议书400字
2014/05/15 职场文书
就业协议书怎么填
2014/09/15 职场文书
论文答辩开场白大全
2015/05/27 职场文书
自信主题班会
2015/08/14 职场文书
生日寿星公答谢词
2015/09/29 职场文书
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python