Node.js Stream 数据流使用手册
Node.js 的数据流(Stream)是一种可读写的、基于事件的API。它们是在处理大量数据时非常有用的工具。Node.js中的Stream属性非常实用,可以帮助我们大大提高服务器的性能。
数据流(Stream)概述
数据流是一种抽象的界面,它让我们可以像读写文件一样读写数据。
Node.js在 fs
和 net
模块中实现了数据流。 Readable
类表示可读数据流, Writeable
类表示可写数据流,而 Duplex
类同时支持读和写, Transform
流是Duplex流的子类,它们通过对数据进行更改来改变数据。
读取数据流
创建一个可读数据流的基本语法如下:
const fs = require("fs");
const stream = fs.createReadStream(filename);
我们还可以查看数据流打开和关闭事件:
stream.on("open",()=>console.log("读取文件已打开"));
stream.on("close",()=>console.log("读取文件已关闭"));
下面来看一个示例,将文件的内容读入流中并打印到控制台上。
const fs = require("fs");
const stream = fs.createReadStream("example.txt");
let data = "";
// 当有数据可读时触发
stream.on("data",(chunk)=>{
data += chunk;
});
// 数据读取结束时触发
stream.on("end",()=>{
console.log(data);
});
// 处理错误
stream.on('error', function(err) {
console.log(err.stack);
});
写入数据流
创建一个可写数据流的基本语法如下:
const fs = require("fs");
const stream = fs.createWriteStream(filename);
我们可以使用 write()
方法和 end()
方法来写入数据。
const fs = require("fs");
const stream = fs.createWriteStream('output.txt');
stream.write("Hello, ");
stream.write("World!\n");
stream.end();
管道流
在Node.js中,我们还可以使用管道(pipe)实现数据流的转移。管道实现了输入输出的流,它可以将一个可读数据流输入到一个可写数据流中。
const fs = require("fs");
const readStream = fs.createReadStream("input.txt");
const writeStream = fs.createWriteStream("output.txt");
readStream.pipe(writeStream);
在上面的代码中,我们通过管道将input.txt中的内容传输到output.txt文件中。
参考
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nodejs Stream 数据流使用手册 - Python技术站