📜  在 nodejs 中复制文件夹 - Javascript (1)

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

在 Node.js 中复制文件夹

有时候我们需要在 Node.js 中复制一个文件夹,可能是为了备份、迁移或者其他目的。本文将介绍如何在 Node.js 中实现文件夹的复制。

使用 fs 模块实现

Node.js 中内置了 fs 模块,它提供了各种文件系统相关的功能。我们可以使用 fs 模块中的 fs.readdirfs.copyFile 方法来实现文件夹的复制。

代码如下:

const fs = require('fs');

function copyFolderSync(source, target) {
  if (!fs.existsSync(target)) {
    fs.mkdirSync(target);
  }

  fs.readdirSync(source).forEach((file) => {
    const sourcePath = `${source}/${file}`;
    const targetPath = `${target}/${file}`;

    if (fs.lstatSync(sourcePath).isDirectory()) {
      copyFolderSync(sourcePath, targetPath);
    } else {
      fs.copyFileSync(sourcePath, targetPath);
    }
  });
}

该方法接收两个参数,分别是源文件夹的路径和目标文件夹的路径。如果目标文件夹不存在,则先创建它。然后,读取源文件夹中的所有文件和文件夹,并逐个遍历。对于每个文件或文件夹,如果是文件夹,则递归调用 copyFolderSync 方法进行处理,否则直接使用 fs.copyFileSync 复制文件。

使用第三方模块实现

除了使用 fs 模块,我们还可以使用一些第三方模块来实现文件夹的复制。其中比较常用的是 ncp 模块。

首先,我们需要安装 ncp 模块:

npm install ncp

然后,可以使用以下代码复制文件夹:

const ncp = require('ncp').ncp;

function copyFolder(source, target) {
  return new Promise((resolve, reject) => {
    ncp(source, target, (err) => {
      if (err) {
        reject(err);
      } else {
        resolve();
      }
    });
  });
}

以上代码中,ncp 方法接收三个参数,分别是源文件夹的路径、目标文件夹的路径和回调函数。我们将其包装成一个 Promise 对象,便于异步调用。

总结

本文介绍了如何在 Node.js 中实现文件夹的复制,包括使用 fs 模块和第三方模块 ncp。通过本文的学习,相信读者已经掌握了如何在 Node.js 中进行文件夹复制的基本方法。