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 相关文章推荐
比较详细的关于javascript 解析json的代码
Dec 16 Javascript
extjs ColumnChart设置不同的颜色实现代码
May 17 Javascript
使用js+jquery实现无限极联动
May 23 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
Jul 31 Javascript
JS在可编辑的div中的光标位置插入内容的方法
Nov 20 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
May 03 Javascript
基于JS实现checkbox全选功能实例代码
Oct 31 Javascript
详解node.js搭建代理服务器请求数据
Apr 08 Javascript
VueJS如何引入css或者less文件的一些坑
Apr 25 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
Apr 27 jQuery
详解vue2.0+vue-video-player实现hls播放全过程
Mar 02 Javascript
vue-cli 引入、配置axios的方法
May 08 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
基于bootstrop常用类总结(推荐)
Sep 11 #Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 #jQuery
You might like
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
php 输出双引号"与单引号'的方法
2010/05/09 PHP
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
javascript取消文本选定的实现代码
2010/11/14 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
javascript修改图片src的方法
2015/01/27 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
微信开发 JS-SDK 6.0.2 经常遇到问题总结
2016/12/08 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
vue.config.js常用配置详解
2019/11/14 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
对python3新增的byte类型详解
2018/12/04 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
澳大利亚的奢侈品牌:Oroton
2016/08/26 全球购物
环境科学专业研究生求职信
2013/10/02 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
先进党支部事迹材料
2014/12/24 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
党性修养心得体会2016
2016/01/21 职场文书
医学会议开幕词
2016/03/03 职场文书
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL