当前位置: 移动技术网 > IT编程>开发语言>JavaScript > Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件

Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件

2017年12月12日  | 移动技术网IT编程  | 我要评论

实现代码一:

var fs  = require('fs')
var path = require('path')

var copyfile = function(srcpath, tarpath, cb) {
 var rs = fs.createreadstream(srcpath)
 rs.on('error', function(err) {
  if (err) {
   console.log('read error', srcpath)
  }
  cb && cb(err)
 })

 var ws = fs.createwritestream(tarpath)
 ws.on('error', function(err) {
  if (err) {
   console.log('write error', tarpath)
  }
  cb && cb(err)
 })
 ws.on('close', function(ex) {
  cb && cb(ex)
 })

 rs.pipe(ws)
}

复制目录及其子目录

var copyfolder = function(srcdir, tardir, cb) {
 fs.readdir(srcdir, function(err, files) {
  var count = 0
  var checkend = function() {
   ++count == files.length && cb && cb()
  }

  if (err) {
   checkend()
   return
  }

  files.foreach(function(file) {
   var srcpath = path.join(srcdir, file)
   var tarpath = path.join(tardir, file)

   fs.stat(srcpath, function(err, stats) {
    if (stats.isdirectory()) {
     console.log('mkdir', tarpath)
     fs.mkdir(tarpath, function(err) {
      if (err) {
       console.log(err)
       return
      }

      copyfolder(srcpath, tarpath, checkend)
     })
    } else {
     copyfile(srcpath, tarpath, checkend)
    }
   })
  })

  //为空时直接回调
  files.length === 0 && cb && cb()
 })
}

使用时

copyfolder('...', '....', function(err) {
 if (err) {

  return
 }

 //continue
})

文章到此结束,希望有帮助的朋友多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网