首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nodejs复制大量文件?

使用nodejs复制大量文件?
EN

Stack Overflow用户
提问于 2016-06-22 04:52:00
回答 2查看 195关注 0票数 0

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

这是我的代码:

代码语言:javascript
复制
         for(var i = 0; i < 25000; i++){
            cp(origin[i], dest[i], function(err){
              console.log("successfully copied")
            })
         }

它完成了循环,但不会复制每一项。复制成功的调用次数在6000 ~ 8000次之间。在那之后,它不再复制。是否与内存或异步任务的限制有关?

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2016-06-22 05:00:28

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

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

代码语言:javascript
复制
var async = require('async');
async.forEachOf(origin, function (file, i, callback) {
    cp(file, dest[i], function(err){
        callback();
    });
})

在调用callback之前,这不会继续循环的下一次迭代。

票数 2
EN

Stack Overflow用户

发布于 2016-06-22 11:13:47

你可以用这个复制异步,

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37954358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档