Node fs 复制文件夹

作者:编程家 分类: 编程代码 时间:2025-08-08

使用Node fs模块可以轻松地复制文件夹。复制文件夹是指将一个文件夹及其所有内容完整地复制到另一个位置。这在许多情况下都是有用的,例如创建文件夹的备份或将文件夹移动到不同的位置。

要复制文件夹,我们首先需要引入Node的fs模块。fs模块是Node.js的核心模块之一,它提供了许多用于文件系统操作的方法。

接下来,我们可以使用fs模块的readdirSync方法来遍历要复制的文件夹中的所有文件和子文件夹。readdirSync方法返回一个包含文件和文件夹名称的数组。

然后,我们可以使用fs模块的mkdirSync方法创建一个新的目标文件夹,用于存储复制的文件夹和文件。

接下来,我们需要递归地复制文件夹中的所有内容。对于每个文件和子文件夹,我们可以使用fs模块的statSync方法来获取其详细信息。如果是文件夹,我们可以递归地调用复制文件夹的函数来复制子文件夹。如果是文件,我们可以使用fs模块的createReadStream和createWriteStream方法来创建读取和写入流,并将文件内容从源文件夹复制到目标文件夹。

最后,当所有文件和子文件夹都被复制后,我们可以通过提示用户复制完成或捕获任何错误来结束复制过程。

下面是一个示例代码,演示了如何使用Node fs模块复制文件夹:

javascript

const fs = require('fs');

const path = require('path');

function copyFolderSync(source, target) {

if (!fs.existsSync(target)) {

fs.mkdirSync(target);

}

const files = fs.readdirSync(source);

files.forEach((file) => {

const sourcePath = path.join(source, file);

const targetPath = path.join(target, file);

if (fs.statSync(sourcePath).isDirectory()) {

copyFolderSync(sourcePath, targetPath);

} else {

fs.copyFileSync(sourcePath, targetPath);

}

});

}

const sourceFolder = './path/to/source/folder';

const targetFolder = './path/to/target/folder';

copyFolderSync(sourceFolder, targetFolder);

console.log('文件夹复制完成!');

代码示例

上面的代码展示了如何使用Node fs模块复制文件夹。首先,我们定义了一个copyFolderSync函数,它接受源文件夹路径和目标文件夹路径作为参数。在函数内部,我们首先检查目标文件夹是否存在,如果不存在则创建它。然后,我们使用readdirSync方法获取源文件夹中的所有文件和子文件夹,并使用forEach方法遍历它们。对于每个文件和子文件夹,我们检查它们的类型。如果是文件夹,则递归地调用copyFolderSync函数来复制它。如果是文件,则使用copyFileSync方法将其复制到目标文件夹中。最后,我们在复制完成后打印一条消息。

使用Node fs模块可以轻松地复制文件夹。通过遍历源文件夹中的所有内容,并递归地复制文件和子文件夹,我们可以完整地复制一个文件夹到另一个位置。这在许多情况下都是非常有用的,例如在创建文件夹的备份或将文件夹移动到不同的位置时。希望这篇文章对你理解如何使用Node fs模块复制文件夹有所帮助。