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 相关文章推荐
js select常用操作控制代码
Mar 16 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
May 14 Javascript
js css后面所带参数含义介绍
Aug 18 Javascript
js获取url中的参数且参数为中文时通过js解码
Mar 19 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
Sep 03 Javascript
jQuery中eq()方法用法实例
Jan 05 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
Feb 16 Javascript
BootStrap表单时间选择器详解
May 09 Javascript
JavaScript中in和hasOwnProperty区别详解
Aug 04 Javascript
微信小程序自定义多选事件的实现代码
May 17 Javascript
jQuery zTree插件使用简单教程
Aug 16 jQuery
关于JS模块化的知识点分享
Oct 16 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 中dirname(_file_)讲解
2007/03/18 PHP
一步一步学习PHP(1) php开发环境配置
2010/02/15 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
PHP会话处理的10个函数
2015/08/11 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
重载toString实现JS HashMap分析
2011/03/13 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
深入理解Python异常处理的哲学
2019/02/01 Python
python同步windows和linux文件
2019/08/29 Python
python或C++读取指定文件夹下的所有图片
2019/08/31 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
模具毕业生推荐信
2014/02/15 职场文书
职工年度考核评语
2014/12/31 职场文书
分享15个Webpack实用的插件!!!
2021/03/31 Javascript
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
python数字转对应中文的方法总结
2021/08/02 Python
Mysql中常用的join连接方式
2022/05/11 MySQL