可读流
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);
});