NodeJS逐文件读取巨大的目录文件

NodeJS read huge directory file by file

我有一个由空文件组成的目录,我想遍历每个文件的名称。然而,我有将近 2000 万个这样的空文件,用 fs.readdirfs.readdirSync 将它们全部加载到内存中会花费不必要的时间并吞噬我在系统上的所有内存。

解决这个问题的方法是什么?

理想情况下,我会寻找以异步方式逐个文件读取的代码,其代码类似于以下内容:

readdirfilebyfile((filename)=>{....}) 这样我就不会在内存中保留整个文件列表。

我目前使用的解决方案是将所有文件名转储到一个文件中,然后我将其作为数据流读取。然而,这只是 运行 远离我应该知道如何解决而不诉诸于此的问题。

这个怎么样? pv 是管道查看器,bash 管道的速率限制器。

const spawn = require('child_process').spawn;
const exec = require('child_process').exec;
const tail = spawn('tail -f /tpm/filelist | pv -l -L 10 -q');
tail.stdout.on('data', fileName => {
  // parse filenames here
  console.log(fileName);
});
exec('ls > /tpm/filelist');