簡體   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