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 相关文章推荐
vs2003 js文件编码问题的解决方法
Mar 20 Javascript
JavaScript 更严格的相等 [译]
Sep 20 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
Aug 01 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
Feb 12 Javascript
基于js中的原型、继承的一些想法
Aug 10 Javascript
详解html-webpack-plugin用法全解
Jan 22 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
Mar 15 Javascript
基于vue2.0的活动倒计时组件countdown(附源码下载)
Oct 09 Javascript
JavaScript JMap类定义与使用方法示例
Jan 22 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
Jul 16 Javascript
vue前后分离调起微信支付
Jul 29 Javascript
简介JavaScript错误处理机制
Aug 04 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
swfupload 多文件上传实现代码
2008/08/27 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
JavaScript 继承使用分析
2011/05/12 Javascript
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
2019/11/10 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
python 快速排序代码
2009/11/23 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
浅析Git版本控制器使用
2017/12/10 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
python实现猜拳小游戏
2020/04/05 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
没编程基础可以学python吗
2020/06/17 Python
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
成品仓管员工作职责
2013/12/29 职场文书
单位介绍信范文
2014/01/18 职场文书
党员大会主持词
2014/04/02 职场文书
工作失职检讨书500字
2014/10/17 职场文书
阿凡达观后感
2015/06/10 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android