NodeJS教程

Stream 读写 Buffer

Preview
  • Node.js Stream 读写 Buffer
  • 可读流读取 Buffer
  • 可写流写入 Buffer
  • 可读可写流读写 Buffer
  • 总结

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() 方法将数据写入到流中。