stream模块

/ NodeJs / 没有评论 / 232浏览

在上一篇我们已经介绍过了对文件的处理模块是fs,如果我们想要对数据进行相关的处理,那么就要用stream模块了。我们可以通过下面的方式引入该模块。

const stream = require('stream');

在stream模块中有四种类型的流类型它们分别是:

Readable流和Writable流在在操作时,都会将数据存储到内部的缓存中。当Readable流调用 stream.push(chunk) 方法时,数据被放到缓存中。Writable 流通过反复调用 writable.write(chunk) 方法将数据放到缓存中。下面我们看一下Readable 类的具体用法。

'close' 事件:事件将在流或其底层资源(比如一个文件)关闭后触发。'close' 事件触发后,该流将不会再触发任何事件。

'data' 事件:事件会在流将数据传递给消费者时触发。

'end' 事件:事件将在流中再没有数据可供消费时触发。

'error' 事件:事件在层系统内部出错时触发。

'readable' 事件:事件将在流中有数据可供读取时触发。

const fs = require("fs");
const stream = require("stream");
const readable = fs.createReadStream("C:/Users/Jilinwula/Desktop/nodejs/bak.txt", "utf-8");
readable.on("data", (chunk) => {
console.log("data:" + chunk);
});
readable.on("readable", () => {
console.log("readable");
});
readable.on("end", () => {
console.log("end");
});

readable.on("close", () => {
console.log("close");
});

readable.on("error", () => {
console.log("error");
});
data: jilinwula.com
readable
end
close
const fs = require("fs");
const stream = require("stream");
const file = fs.createWriteStream("C:/Users/Jilinwula/Desktop/nodejs/bak.txt", "utf-8");
file.write("吉林乌拉");
file.end("jilinwula.com");

这两段文字都会写到文件中。