📜  在 nodejs 中复制目录 - Javascript (1)

📅  最后修改于: 2023-12-03 15:23:14.190000             🧑  作者: Mango

在 Node.js 中复制目录

在 Node.js 中,复制目录是一个常见的需求。本文将介绍如何使用 Node.js 实现复制目录的功能。

用 fs 模块复制目录

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,可以直接复制整个目录及其子目录中的所有文件和目录。