js实现将文件夹内所有文件和子文件夹拷贝到另外的文件夹中
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
方案一:
可以使用child_process模块调用操作系统的命令完成,比如linux下的mv mkdir等命令
方案二:
纯js方法
需要两个引用2个库
const fs = require('fs');
const path = require('path');
将源文件拷贝到目标文件:
//! 将srcPath路径的文件复制到tarPath
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);
}
将源文件夹下所有的文件和子文件夹,拷贝到目标文件夹下
//! 将srcDir文件下的文件、文件夹递归的复制到tarDir下
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();
});
}
如上所示。
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献5条内容
所有评论(0)