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获取服务器时间的两个简单方法
Jan 08 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
Oct 11 Javascript
js实现杯子倒水问题自动求解程序
Mar 25 Javascript
通过length属性判断jquery对象是否存在
Oct 18 Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 Javascript
require.js的用法详解
Oct 20 Javascript
基于jquery实现的仿优酷图片轮播特效代码
Jan 13 Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 Javascript
BootStrap fileinput.js文件上传组件实例代码
Feb 20 Javascript
vue监听滚动事件实现滚动监听
Apr 11 Javascript
原生js代码能实现call和bind吗
Jul 31 Javascript
TypeScript 运行时类型检查补充工具
Sep 28 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
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
基于node实现websocket协议
2016/04/25 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
2016/12/18 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
在Python中移动目录结构的方法
2016/01/31 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
python生成excel的实例代码
2017/11/08 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
pycharm运行scrapy过程图解
2019/11/22 Python
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
学生会竞聘书范文
2014/03/31 职场文书
暑期培训心得体会
2014/09/02 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python