📅  最后修改于: 2023-12-03 15:11:56.687000             🧑  作者: Mango
在 JavaScript 中复制文件夹可以使用 Node.js 提供的 fs 模块中的 copyFileSync()
方法。下面给出一个示例代码片段,展示如何复制 src
文件夹下所有的文件及子文件夹到 dist
文件夹下。
const fs = require('fs');
const path = require('path');
function copyDirSync(src, dist) {
fs.access(dist, fs.constants.F_OK, (err) => {
if (!err) {
fs.rmdirSync(dist, { recursive: true });
}
fs.mkdirSync(dist);
});
const paths = fs.readdirSync(src);
paths.forEach((pathItem) => {
const srcPath = `${src}/${pathItem}`;
const distPath = `${dist}/${pathItem}`;
const newPath = path.join(src, pathItem);
const newDist = path.join(dist, pathItem);
if (fs.statSync(newPath).isFile()) {
fs.copyFileSync(newPath, newDist);
} else {
copyDirSync(srcPath, distPath);
}
});
}
copyDirSync('./src', './dist');
首先定义了一个 copyDirSync()
函数,它有两个参数,分别表示源文件夹和目标文件夹的路径。在函数内部,首先获取源文件夹下所有的文件和子文件夹的路径,然后遍历每个路径。对于每个路径,判断它是文件还是文件夹,若是文件,则直接复制到目标文件夹;若是文件夹,则递归调用 copyDirSync()
函数,复制该文件夹下的所有文件和子文件夹。
在调用 copyDirSync()
函数时,传入源文件夹和目标文件夹的路径,即可将源文件夹下的所有文件和子文件夹复制到目标文件夹下。如果目标文件夹已经存在,则删除目标文件夹及其所有文件后再创建新的目标文件夹。
使用该代码片段可以在需要时以各种角度来复制文件夹到指定的位置。