var fs = require('fs');
var path = require('path');
function copyFile (src, dist, callback) {
// 读取目标文件夹
fs.readdir(src, function (err, paths) {
if (err) {
throw err;
}
// 遍历目录
paths.forEach(function (file) {
// 拼接文件路径
var pathname = path.join(src, file);
var distname = path.join(dist, file);
// 查看文件/文件夹信息
fs.stat(pathname, function (err, st) {
if (err) {
throw err;
}
// 如果是个文件
if (st.isFile()) {
// 调用回调函数执行拷贝
callback && callback(pathname, distname, st.size);
} else {
// 如果是文件夹,则判断文件夹是否存在,不存在就创建该文件夹,存在就直接拷贝文件夹里的内容
if (!fs.existsSync(distname)) {
fs.mkdirSync(distname);
copyFile(pathname, distname, callback);
} else {
copyFile(pathname, distname, callback);
}
}
});
});
});
}
copyFile(path.resolve('src'), path.resolve('dist'), function (pathname, distname, size) {
// 判断文件大小,大文件以流的形式拷贝
if (size / 1024 / 1024 > 300) {
var rs = fs.createReadStream(pathname);
var ws = fs.createWriteStream(distname);
rs.pipe(ws);
} else {
fs.writeFileSync(distname, fs.readFileSync(pathname));
}
});
fs--目录克隆
最新推荐文章于 2024-04-23 16:34:56 发布