替代节点

时间:2016-12-25 01:16:23

标签: node.js

我有一个目录,里面有几百万个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. 我应该使用其他操作吗?

1 个答案:

答案 0 :(得分:0)

您需要使用创建目录列表的子进程(最简单)并解析将您自己的可绑定绑定写入scandir()(on * nix)和/或无论Windows上的等价物是什么,并使用它。对于后者,您可能希望使用libuv代码(*nixWindows)作为指南。