跳转至

fs 模块

fs.createReadStream()

fs.createReadStream方法读取一个文件,以 stream 的形式返回。

const readStream = fs.createReadStream(
  inputFilePath,
  { encoding: 'utf8', highWaterMark: 1024 }
);

该方法的第一个参数是文件的路径,第二个参数是一个配置对象。

配置对象的encoding属性,决定了fs.createReadStream方法的返回值。如果该属性为null,返回的是二进制的 buffer;如果为字符串(比如utf8),返回的是这种编码的字符串。

配置对象的highWaterMark属性指定了每次返回的 buffer 或字符串的最大体积(单位字节)。

stream 以事件的形式获取。

readStream.on('data', (chunk) => {
  console.log('>>> '+chunk);
});
readStream.on('end', () => {
  console.log('### DONE ###');
});

Node v10 开始,Stream 有异步遍历器(asynchronous iteration)接口(即具有Symbol.asyncIterator属性),因此可以使用for-await-of读取。

async function main(inputFilePath) {
  const readStream = fs.createReadStream(inputFilePath,
    { encoding: 'utf8', highWaterMark: 1024 });

  for await (const chunk of readStream) {
    console.log('>>> '+chunk);
  }
  console.log('### DONE ###');
}

参考链接