📅  最后修改于: 2023-12-03 15:23:14.190000             🧑  作者: Mango
在 Node.js 中,复制目录是一个常见的需求。本文将介绍如何使用 Node.js 实现复制目录的功能。
Node.js 内置的 fs 模块提供了复制文件和目录的功能。
const fs = require('fs');
const path = require('path');
function copyDir(srcDir, dstDir) {
// 如果目标目录不存在,则创建目标目录
if (!fs.existsSync(dstDir)) {
fs.mkdirSync(dstDir);
}
// 遍历源目录的文件和子目录
fs.readdirSync(srcDir).forEach(file => {
const srcFile = path.join(srcDir, file);
const dstFile = path.join(dstDir, file);
const stat = fs.statSync(srcFile);
if (stat.isFile()) { // 如果是文件,则直接复制文件
fs.copyFileSync(srcFile, dstFile);
} else if (stat.isDirectory()) { // 如果是目录,则递归复制目录
copyDir(srcFile, dstFile);
}
});
}
上面的代码定义了一个 copyDir 函数,它接受源目录和目标目录作为参数。函数通过 fs 模块的函数 readFile、writeFile 和 mkdirSync 实现文件和目录的复制。
Node.js 的 npm 包管理器提供了大量可用的第三方模块。有些第三方模块提供了更加简单的 API,使用起来更加方便。
其中一个流行的第三方模块是 fs-extra。这个模块提供了递归复制目录的方法:
const fse = require('fs-extra');
fse.copySync(srcDir, dstDir);
上面的代码使用 fs-extra 模块的 copySync 方法复制了一个目录。这个方法默认会递归复制目录及其子目录中所有的文件和目录。
在 Node.js 中复制目录可以使用 fs 模块或 fs-extra 模块。fs 模块提供了基本的复制功能,需要编写递归代码实现目录的复制。而 fs-extra 模块则提供了更加方便的 API,可以直接复制整个目录及其子目录中的所有文件和目录。