gpt4 book ai didi

node.js - Node 中 fs.readdirSync 大目录目录的替代方案

转载 作者:太空宇宙 更新时间:2023-11-03 22:28:43 27 4
gpt4 key购买 nike

我有一个目录,其中有几百万个 json 文件。我最终想迭代目录中的每个文件,读取它,对信息执行某些操作,然后将某些内容写入数据库。

当我使用包含数百个文件的测试目录时,我的脚本可以完美运行。但是,当我使用真实目录时,它会停止。我坚信我已经将问题指出为使用:

fs.readdirSync('my dir path')

将其转换为异步函数不会有任何帮助,因为无论如何我都需要文件名才能发生其他事情。然而,我相信这个操作挂起是因为它读取整个目录“花费太长时间”。

此处提供了该函数的更广泛部分供引用:

function traverseFS(){
var path = 'my dir name and path';
var files = fs.readdirSync(path);
for (var i in files) {
path + '/' + files[i];
var fileText = fs.readFileSync(currentFile,'utf8');
var json= JSON.parse(fileText);
if(json)
// do something
}
}

我的问题是:

  1. 我可以做些什么来使用 readdirSync 使其正常工作吗?
  2. 我应该使用其他操作吗?

最佳答案

您需要使用一个子进程(最简单)来创建目录列表并解析该目录,或者将您自己的流式绑定(bind)写入 scandir() (在 * nix) 和/或 Windows 上的任何等效项并使用它。对于后者,您可能需要使用 libuv 代码( *nixWindows )作为指导。

关于node.js - Node 中 fs.readdirSync 大目录目录的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318054/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com