什么是流?
流是一种将整体数据分割成多个小块依次进行处理的方式。
举个形象的例子:
山上有1000颗拳头大的小石子,需要搬下山。
流的类型
共四种:
流的事件和方法
常用事件有:
// chunk 为数据片段
readableSrc.on("data", (chunk) => {});
// chunk 为数据片段
readableSrc.on("end", (chunk) => {});
可读流的常用方法有:
可写流的常用方法有:
Node.js 内支持流的内置模块
流的使用
import { createReadStream } from "fs";// 创建可读流
const readableSrc = createReadStream("./test.txt");
// 将可读流的内容输出到控制台
readableSrc.pipe(process.stdout);
import { createReadStream, createWriteStream } from "fs";// 创建可读流
const readableSrc = createReadStream("./test.txt");
// 创建可写流
const writeSrc = createWriteStream("./test2.txt");
// 将可读流的内容通过管道传输到可写流中
readableSrc.pipe(writeSrc);
// 若不存在test2.txt,则会创建test2.txt,内容与test.txt相同
// 若已存在test2.txt,则会清空test2.txt的原内容,并将test.txt的内容写入其中,最终test2.txt的内容与test.txt相同
最后的 pipe 相当于
// chunk 为数据片段
readableSrc.on("data", (chunk) => {writeSrc.write(chunk);
});readableSrc.on("end", () => {writeSrc.end();
});
import { createReadStream, createWriteStream } from "fs";
// 导入方法--创建.gz的压缩包
import { createGzip } from "zlib";
// 创建可读流
const readableSrc = createReadStream("./test.txt");
// 创建可写流
const writeSrc = createWriteStream("./test.gz");
// 先将可读流的内容通过管道传输到转换流进行压缩打包
// 再将转换流中的压缩包数据通过管道传输到可写流中
readableSrc.pipe(createGzip()).pipe(writeSrc);
此处的 createGzip() 是一个转换流
上一篇:vulnhub靶机raven1