Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
实现代码一:
varfs=require('fs') varpath=require('path') varcopyFile=function(srcPath,tarPath,cb){ varrs=fs.createReadStream(srcPath) rs.on('error',function(err){ if(err){ console.log('readerror',srcPath) } cb&&cb(err) }) varws=fs.createWriteStream(tarPath) ws.on('error',function(err){ if(err){ console.log('writeerror',tarPath) } cb&&cb(err) }) ws.on('close',function(ex){ cb&&cb(ex) }) rs.pipe(ws) }
复制目录及其子目录
varcopyFolder=function(srcDir,tarDir,cb){ fs.readdir(srcDir,function(err,files){ varcount=0 varcheckEnd=function(){ ++count==files.length&&cb&&cb() } if(err){ checkEnd() return } files.forEach(function(file){ varsrcPath=path.join(srcDir,file) vartarPath=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 })
文章到此结束,希望有帮助的朋友多多支持毛票票。