Node.js 使用流实现读写同步边读边写功能

发布时间 - 2026-01-11 03:11:22    点击率:

废话不多说了,直接给大家贴代码了,具体代码如下所示:

//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 使用流实现读写同步边读边写功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# node.js  # 读写  # node.js基于fs模块对系统文件及目录进行读写操作的方法详解  # node.js 利用流实现读写同步  # 边读边写的方法  # 基于node.js的fs核心模块读写文件操作(实例讲解)  # Node.js Sequelize如何实现数据库的读写分离  # Node.js的文件权限及读写flag详解  # Node.js读写文件之批量替换图片的实现方法  # Node.js Streams文件读写操作详解  # 在Node.js应用中读写Redis数据库的简单方法  # 详解Node.js读写中文内容文件操作  # 给大家  # 小编  # 在此  # 说了  # 不多  # 给我们  # 就行  # 看完  # 想看  # 所示  # 干了  # 所述  # 读到  # 给我留言  # 感谢大家  # 流到  # 续写  # 应该是  # 疑问请  # 有任何 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: EditPlus 正则表达式 实战(3)  深入理解Android中的xmlns:tools属性  Laravel storage目录权限问题_Laravel文件写入权限设置  详解Android中Activity的四大启动模式实验简述  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  如何在云指建站中生成FTP站点?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何用PHP快速搭建CMS系统?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  如何快速配置高效服务器建站软件?  Firefox Developer Edition开发者版本入口  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  lovemo网页版地址 lovemo官网手机登录  如何获取上海专业网站定制建站电话?  如何快速查询域名建站关键信息?  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  如何在宝塔面板中修改默认建站目录?  如何制作一个表白网站视频,关于勇敢表白的小标题?  中国移动官方网站首页入口 中国移动官网网页登录  如何快速搭建二级域名独立网站?  Python图片处理进阶教程_Pillow滤镜与图像增强  如何在宝塔面板创建新站点?  Laravel如何实现一对一模型关联?(Eloquent示例)  个人摄影网站制作流程,摄影爱好者都去什么网站?  iOS UIView常见属性方法小结  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  免费视频制作网站,更新又快又好的免费电影网站?  百度浏览器如何管理插件 百度浏览器插件管理方法  网站页面设计需要考虑到这些问题  Python进程池调度策略_任务分发说明【指导】  Laravel如何使用.env文件管理环境变量?(最佳实践)  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  高性能网站服务器部署指南:稳定运行与安全配置优化方案  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  香港服务器租用每月最低只需15元?  如何在Windows虚拟主机上快速搭建网站?  使用C语言编写圣诞表白程序  JavaScript如何实现错误处理_try...catch如何捕获异常?  🚀拖拽式CMS建站能否实现高效与个性化并存?  android nfc常用标签读取总结  zabbix利用python脚本发送报警邮件的方法  如何用免费手机建站系统零基础打造专业网站?  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  如何用已有域名快速搭建网站?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  香港服务器如何优化才能显著提升网站加载速度?