使用nodejs复制大量文件?

时间:2016-06-21 20:52:00

标签: javascript node.js

我必须异步复制大量文件(如25000)。我正在使用这个库:https://github.com/stephenmathieson/node-cp

这是我的代码:

         for(var i = 0; i < 25000; i++){
            cp(origin[i], dest[i], function(err){
              console.log("successfully copied")
            })
         }

它完成循环,但它不会复制每个项目。 “成功复制”的调用时间为6000到8000次。之后它不再复制了。它与内存或异步任务的限制有关?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

复制功能采用回调,这通常是一个很好的线索,它是异步的。这意味着即使副本没有完成,for循环仍将继续运行,这意味着您只排队了25,000次复制操作!

有几种方法可以解决这个问题,但最常见的方法是使用async模块。

var async = require('async');
async.forEachOf(origin, function (file, i, callback) {
    cp(file, dest[i], function(err){
        callback();
    });
})

这不会进行到循环的下一次迭代,直到调用callback

答案 1 :(得分:0)

你可以用这个复制异步,

arg="$@"
firstChar=$(eval "$arg" | cut -c 1)

info =&gt; https://www.npmjs.com/package/fs-extra