假设我有一个大目录,也许在目录中有10,000,000多个项目。
如果我使用
fs.readdir(dir, (err, items) => {});
它将大量加载到内存中,因为items数组将是1000万个项目。有没有办法一次读取目录15000个项目,有一些linux命令和子进程?
要将文件夹/目录数据流式传输到Node.js,您可以使用:
const rl = require('readline');
const cp = require('child_process');
const k = cp.spawn('bash');
k.stdin.end(`find . -maxdepth 1 -type f`);
rl.createInterface({
input: k.stdout,
})
.on('line', v => {
// new file path
});
更多信息可以在这个Github线程上找到:https://github.com/nodejs/node/issues/21804