Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
更新时间:2017年09月18日 22:17:02 投稿:mdxy-dxy
在Node.js中,要实现目录文件夹的循环递归复制也非常简单,使用fs模块即可,仅需几行,而且性能也不错,我们先来实现文件的复制,需要的朋友可以参考下
实现代码一:
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
})
文章到此结束,希望有帮助的朋友多多支持脚本之家。
相关文章
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
这篇文章主要介绍了node.js使用net模块创建服务器和客户端,结合实例形式分析了node.js使用net模块实现TCP客户端与服务器端通信的相关操作技巧,需要的朋友可以参考下2020-02-02
nodejs+express+multer搭建文件上传文件预览功能
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具,今天给大家分享nodejs+express+multer搭建文件上传文件预览功能,感兴趣的朋友一起看看吧2025-03-03
解决node-webkit 不支持html5播放mp4视频的方法
本文给大家分享的是解决node-webkit 不支持html5播放mp4视频的方法,其原因大概是因为node-webkit没有购买mp4格式的专利授权,恩,我们来想个办法来解决这个事情吧。2015-03-03


最新评论