繁体   English   中英

使用nodejs复制大量文件?

[英]Copying large amount of files with nodejs?

我必须异步复制大量文件(例如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次。 之后,它将不再复制。 它与内存有关还是对异步任务有限制?

任何帮助,将不胜感激!

复制函数接受一个回调,这通常是异步的一个很好的线索。 这意味着即使复制尚未完成,for循环仍将继续运行,这意味着您仅排队25,000个复制操作!

有几种方法可以解决此问题,但最常见的方法是使用异步模块。

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

callback之前,不会进行循环的下一个迭代。

您可以与此复制异步,

var fs = require('fs-extra')

fs.copy('/tmp/myfile', '/tmp/mynewfile', function (err) {
  if (err) return console.error(err)
  console.log("success!")
}) // copies file 

fs.copy('/tmp/mydir', '/tmp/mynewdir', function (err) {
  if (err) return console.error(err)
  console.log('success!')
}) // copies directory, even if it has subdirectories or file

信息=> https://www.npmjs.com/package/fs-extra

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM