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


相关推荐: 音响网站制作视频教程,隆霸音响官方网站?  Laravel如何实现数据库事务?(DB Facade示例)  lovemo网页版地址 lovemo官网手机登录  如何快速生成高效建站系统源代码?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  非常酷的网站设计制作软件,酷培ai教育官方网站?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  php json中文编码为null的解决办法  如何在IIS中新建站点并配置端口与IP地址?  如何在云指建站中生成FTP站点?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  如何基于PHP生成高效IDC网络公司建站源码?  高端建站如何打造兼具美学与转化的品牌官网?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  如何在建站之星网店版论坛获取技术支持?  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  ,怎么在广州志愿者网站注册?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  ,在苏州找工作,上哪个网站比较好?  WordPress 子目录安装中正确处理脚本路径的完整指南  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何安全更换建站之星模板并保留数据?  SQL查询语句优化的实用方法总结  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  如何实现javascript表单验证_正则表达式有哪些实用技巧  Laravel如何使用Service Container和依赖注入?(代码示例)  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  nginx修改上传文件大小限制的方法  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  如何获取PHP WAP自助建站系统源码?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何在宝塔面板创建新站点?  用v-html解决Vue.js渲染中html标签不被解析的问题  如何用JavaScript实现文本编辑器_光标和选区怎么处理  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Android GridView 滑动条设置一直显示状态(推荐)  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何在腾讯云服务器上快速搭建个人网站?  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  如何在VPS电脑上快速搭建网站?  javascript日期怎么处理_如何格式化输出  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  简单实现jsp分页  Java解压缩zip - 解压缩多个文件或文件夹实例