Node-可读流

可读流

const fs = require("fs");
const path = require("path");

const filename = path.resolve(__dirname, "./abc.txt");
const rs = fs.createReadStream(filename, {
  /*编码格式*/
  encoding: "utf-8",
  /*流一次读取的数量*/
  highWaterMark: 1,
  /*读完后会自动完毕,默认为true*/
  autoClose: true 
});

当创建一个可读流之后会触发注册事件 可以脑补位Dom事件注册–类似于addeventlistener
规则如rs.on(事件名,处理函数)

open

文件打开事件,表示文件被打开- 打开后触发

rs.on("open", () => {
  console.log("文件被打开了");
});

error

读取出错事件 表示在读取过程中出现错误

rs.on("error", () => {
  console.log("出错了!!");
});

close

文件关闭后触发 如:rs.close手动关闭
读取完成之后才会关闭,当前只是打开环节,不会触发这个

rs.on("close", () => {
  console.log("文件关闭了");
});

data

只有注册这个事件之后才会开始进行文件读取 ps:全部读取之后会导致close触发
作为可读流 这个是一节一节读的 具体一次读多少 会参考函数highWaterMark&encoding两个函数 如encoding为默认值则一次读取一个字节(1文字=3字节)

rs.on("data", 数据参数=> {
  console.log("读到了一部分数据:", 数据参数);
});

rs.on(“resume”, () => {
console.log(“恢复了”);
});

end

全部数据读取完毕, 会优先于close函数触发 end>close

rs.on("end", () => {
  console.log("全部数据读取完毕");
});

补充

rs.pause rs.resume

rs.pause:暂停读取
rs.resume 继续读取

rs.on("data", 数据参数=> {
  console.log("读到了一部分数据:", 数据参数);
});
rs.on("pause", () => {
  console.log("暂停了");
  setTimeout(() => {
    rs.resume();
  }, 1000);
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值