Node.js Stream 读写 Buffer
在 Node.js 中,Stream 是一种基于事件的 API,用于处理流式数据。Stream 可以是可读的、可写的或可读可写的。在本文中,我们将介绍如何使用 Stream 读写 Buffer。
可读流读取 Buffer
可读流可以使用 on('data')
事件来读取数据。当有数据可用时,data 事件将被触发。读取的数据将作为 Buffer 对象传递给回调函数。
const fs = require('fs');
const readable = fs.createReadStream('file.txt');
readable.on('data', (chunk) => {
console.log(chunk.toString());
});
在这个示例中,我们创建了一个可读流,并添加了一个 data 事件监听器。当有数据可用时,data 事件将被触发,并将读取的数据作为 Buffer 对象传递给回调函数。
可写流写入 Buffer
可写流可以使用 write() 方法将数据写入到流中。数据可以是字符串、Buffer 对象或 Uint8Array 对象。
const fs = require('fs');
const writable = fs.createWriteStream('file.txt');
writable.write('hello');
writable.write('world');
在这个示例中,我们创建了一个可写流,并使用write()
方法将字符串写入到流中。我们还可以使用 Buffer 对象将二进制数据写入到流中。
const fs = require('fs');
const writable = fs.createWriteStream('file.txt');
const buf = Buffer.from('hello');
writable.write(buf);
可读可写流读写 Buffer
可读可写流可以同时读取和写入数据。我们可以使用 on('data')
事件来读取数据,也可以使用 write() 方法将数据写入到流中。
const fs = require('fs');
const duplex = require('stream').Duplex;
const stream = new duplex({
read(size) {
const buf = Buffer.alloc(size);
this.push(buf);
},
write(chunk, encoding, callback) {
console.log(chunk.toString());
callback();
},
});
stream.write('hello');
stream.write('world');
在这个示例中,我们创建了一个可读可写流,并实现了read()
和 write()
方法。read()
方法将创建一个指定大小的 Buffer 对象并将其推送到可读流中。write()
方法将读取写入的数据并将其打印到控制台上。
总结
在 Node.js 中,Stream 是一种基于事件的 API,用于处理流式数据。可读流可以使用on('data')
事件来读取数据。可写流可以使用 write()
方法将数据写入到流中。可读可写流可以同时读取和写入数据。我们可以使用 on('data')
事件来读取数据,也可以使用 write()
方法将数据写入到流中。