Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
短信预约 -IT技能 免费直播动态提醒
实现代码一:
var fs = require('fs')
var path = require('path')
var copyFile = function(class="lazy" data-srcPath, tarPath, cb) {
var rs = fs.createReadStream(class="lazy" data-srcPath)
rs.on('error', function(err) {
if (err) {
console.log('read error', class="lazy" data-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(class="lazy" data-srcDir, tarDir, cb) {
fs.readdir(class="lazy" data-srcDir, function(err, files) {
var count = 0
var checkEnd = function() {
++count == files.length && cb && cb()
}
if (err) {
checkEnd()
return
}
files.forEach(function(file) {
var class="lazy" data-srcPath = path.join(class="lazy" data-srcDir, file)
var tarPath = path.join(tarDir, file)
fs.stat(class="lazy" data-srcPath, function(err, stats) {
if (stats.isDirectory()) {
console.log('mkdir', tarPath)
fs.mkdir(tarPath, function(err) {
if (err) {
console.log(err)
return
}
copyFolder(class="lazy" data-srcPath, tarPath, checkEnd)
})
} else {
copyFile(class="lazy" data-srcPath, tarPath, checkEnd)
}
})
})
//为空时直接回调
files.length === 0 && cb && cb()
})
}
使用时
copyFolder('...', '....', function(err) {
if (err) {
return
}
//continue
})
文章到此结束,希望有帮助的朋友多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341