当前位置: 首页 > news >正文

【前端知识】Node——文件流的读写操作

四种基本流类型:
1.Writable: 可以向其写入数据的流
2.Readable: 可以从中读取数据的流
3.Duplex:同时为Readable 和 Writable
4.Transform: Duplex可以在写入和读取数据时修改或转换数据的流

一、Readable

const fs = require('fs');// 创建文件的Readable
const reader = fs.createReadStream('./test.txt', {start: 8, // 文件读取开始的位置end: 18, // 文件读取结束的位置highWaterMark: 4 // 一次性读取字节的长度,默认是64kb;
})// 监听 read 数据
reader.on('data', (data) => {console.log(data.toString());
})// 监听打开文件
reader.on('open', (fd) => {console.log('文件被打开!');
})// 监听读取结束
reader.on('end', () => {console.log('文件读取结束!');
})// 监听关闭文件
reader.on('close', () => {console.log('文件被关闭!');
})

二、Writable

// 创建文件的Writable
const writer = fs.createWriteStream('./test.txt', {flags: 'a+', // 追加写入start: 8 // 写入位置
});// 写入数据 
writer.write("Hello OUTMAN", () => {console.log('写入成功!');
})// 监听文件打开
writer.on('open', () => {console.log('文件被打开!');
})// 监听文件关闭(无法监听)
// 无法监听的原因:写入流在打开后不会自动关闭,必须手动触发来通知node已经写入结束,并发射finish事件
writer.on('close', () => {console.log('文件被关闭!'); // 无法监听,不打印
})// 手动close后, finish ---> close
writer.close();writer.on('finish', () => {console.log('文件写入完成!');
})writer.on('close', () => {console.log('文件被关闭!');
})// 直接使用end,end = write传值 + 文件close,一步到位
writer.end('Hello Outman!')

三、pipe方法

// pip方法
const reader = fs.createReadStream('./test.txt');
const writer = fs.createWriteStream('./copy.txt');// 常规方法,嵌套 read & write
reader.on('data', (data) => {console.log(data);writer.write(data, (err) => {console.log(err);})
})// 利用pipe实现
reader.pipe(writer);
http://www.lryc.cn/news/237602.html

相关文章:

  • 解决证书加密问题:OpenSSL与urllib3的兼容性与优化
  • #gStore-weekly | gAnswer源码解析 调用NE模块流程
  • vscode 配置 lua
  • vscode设置代码模板
  • 用css实现原生form中radio单选框和input的hover已经focus的样式
  • uniapp:录音权限检查,录音功能
  • Rust开发——切片(slice)类型
  • 如何给shopify motion主题的产品系列添加description
  • 力扣刷题-二叉树-二叉树最小深度
  • 注解方式优雅的实现 Redisson 分布式锁
  • PHP/Laravel通过经纬度计算距离获取附近商家
  • grafana面板介绍
  • 实验三 循环结构程序设计(Python)
  • Flutter笔记:目录与文件存储以及在Flutter中的使用(上)
  • 注意了!申请流量卡时地址一定不要填写学校,不好下卡哦!
  • minio使用shell上传文件
  • LeetCode538. Convert BST to Greater Tree
  • iPaaS和RPA,企业自动化应该如何选择?
  • AI实践与学习1_Milvus向量数据库实践与原理分析
  • 3Dexcite deltgen 2022x 新功能
  • 代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形
  • 【2023云栖】陈守元:阿里云开源大数据产品年度发布
  • Element UI 禁用数字输入框组件添加鼠标滚动事件
  • 担忧CentOS停服?KeyarchOS系统来支撑
  • 聚观早报 |联想集团Q2财季业绩;小鹏汽车Q3营收
  • SAP ABAP权限控制中常用TCODE
  • 云计算赛项容器云2023搭建
  • 11.1 文件拷贝移动与删除
  • redhat下使用CentOS yum源,并安装docker
  • 基于单片机体温脉搏检测控制系统及源程序