Node.js 通过流实现异步读写

利用 Node.js 的流机制,可以实现边读边写,提升读写效率。通过创建可读流和可写流,可以实现数据的异步传输。当可读流读取到数据时,会触发 'data' 事件,此时可将数据写入可写流,并触发 'drain' 事件,从而继续读取数据。当可读流读取完毕后,会触发 'end' 事件,此时关闭可读流。

具体实现如下:

const fs = require('fs');

function pipe(source, target) {
  const rs = fs.createReadStream(source, { highWaterMark: 4 });
  const ws = fs.createWriteStream(target);

  rs.on('data', data => {
    const ok = ws.write(data);
    if (!ok) rs.pause(); // 暂停读取
  });

  ws.on('drain', () => rs.resume()); // 恢复读取

  rs.on('end', () => ws.end());
}
pdf 文件大小:35.39KB