📌  相关文章
📜  如何在 Node.js 中递归复制文件夹?

📅  最后修改于: 2022-05-13 01:56:35.225000             🧑  作者: Mango

如何在 Node.js 中递归复制文件夹?

Node.js 是对现有 javaScript 的增强。它用于服务器端脚本。它主要用于开发动态 Web 应用程序。 Node.js 开发人员更喜欢使用异步函数而不是同步函数,因为前者在任何情况下都不会阻止程序执行。使用传统的 Node.js 文件复制方法复制具有多个子文件夹的文件或文件夹可能会很乏味。但是,使用附加模块使任务更容易。

讨论中的两个模块是 NCP 模块和 fs-extra 模块。这两个模块都支持异步功能,以帮助递归复制文件夹的过程。

下面的示例演示了如何使用这些模块递归地复制文件夹。

Create a folder structure as follows 
in the working directory:
mkdir f1\f2\f3\f4\f5
notepad f1\f2\f3\f4\f5\new.txt
// Write some text and save the .txt file

句法:

ncp(source, destination, options, callback)

范围:

  • source:源文件夹的文件路径。
  • destination:目标文件夹的文件路径。
  • 选项
    • options.filter:一个正则表达式,可用于指定是否必须复制或跳过文件夹/文件。
    • options.transform:可用于在复制时应用流式变换的函数。
    • options.clobber:可以设置为 true 或 false。如果设置为 false,则 ncp 不会覆盖目标中已存在的文件。
    • options.stopOnErr:可以设置为 true 或 false。默认情况下,它设置为 false 即 ncp 继续复制、记录所有错误并返回一个数组。如果设置为 true,则 ncp 在遇到第一个错误时停止。
  • 回调:在完成给定任务时调用的函数,并将错误作为第一个参数。如果发生错误,回调函数会在不阻塞程序执行的情况下处理它。

示例 1:使用 ncp 模块
使用以下命令安装ncp模块:

npm install ncp

文件名:recursiveCopy.js 文件

var ncp = require('ncp').ncp;
  
// Represents the number of pending
// file system requests at a time.
ncp.limit = 16;
  
// ncp(source, destination, callback) 
ncp('D:\\HTML\\f1', 'D:\\HTML\\recursive', 
        function (err) {
    if (err) {
        return console.error(err);
    }
  
    console.log('Folders copied recursively');
});

输出:

句法:

fs.copy(source, destination, callback)

范围:

  • source:源文件夹的文件路径。
  • destination:目标文件夹的文件路径。
  • 回调:在完成给定任务时调用的函数,并将错误作为第一个参数。如果发生错误,回调函数会在不阻塞程序执行的情况下处理它。如果未通过回调,则返回 Promise。

示例 2:使用 fs-extra 模块
使用以下命令安装fs-extra模块:

npm install fs-extra

文件名:fsrecur.js

const fs = require('fs-extra');
  
// Async with promises:
fs.copy('D:\\HTML\\f1', 'D:\\HTML\\fsextra')
.then(() => console.log('Files copied successfully!'))
.catch(err => console.error(err));

输出:

说明: f1 中从 f2 到 f5 的所有文件夹都递归地复制到“递归”文件夹中。这些文件夹中的任何文件或文件夹都会被复制到新文件夹中。