Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出)。
Node.js-Stream 有四种流类型:
- Readable - 可读操作。
- Writable - 可写操作。
- Duplex - 可读可写操作.
- Transform - 操作被写入数据,然后读出结果。
所有的 Stream 对象都是 EventEmitter 的实例。常用的事件有:
- data - 当有数据可读时触发。
- end - 没有更多的数据可读时触发。
- finish - 所有数据已被写入到底层系统时触发。
- error - 在接收和写入过程中发生错误时触发。
创建 main.js 文件, 代码如下:
// stream: 流
const fs = require("fs");
//读取了数据
let rs = fs.createReadStream("11.txt");
//将数据写入
let ws = fs.createWriteStream("22.txt");
//管道
// rs.pipe(ws);
// console.log(rs);
//流,会把数据分成64kb的小文件传输
let num = 0;
let str = "";
// 数据传输时, 触发的方法
rs.on("data",chunk=>{
num++;
str += chunk;
console.log(chunk);
console.log(num);
});
// 数据传递完成后
rs.on("end",()=>{
console.log(str);
});
// let buffer = Buffer.alloc(65*1024); //创建一个65kb大小的内容
// fs.writeFile("65kb",buffer,err=>{
// if(err){
// return console.log(err);
// }
// console.log("写入成功");
// });