首先需要明确的是,使用 Node.js 实现循环递归复制文件夹目录及其子文件夹下的所有文件,需要使用 Node.js 自带的文件系统模块 fs,以及递归遍历的方法。
步骤一:创建函数
首先,需要创建一个函数,传入两个参数:源文件夹路径和目标文件夹路径。
const fs = require("fs");
const path = require("path");
function copyDir(srcPath, targetPath) {
// TODO: 实现复制文件夹目录及其子文件夹下的所有文件功能
}
步骤二:判断源路径是否存在
接下来,需要判断源文件夹路径是否存在。如果不存在,则需要给出相应的提示。如果存在,则需要继续执行代码。
const fs = require("fs");
const path = require("path");
function copyDir(srcPath, targetPath) {
// 判断源路径是否存在
if (!fs.existsSync(srcPath)) {
console.log(`源路径 ${srcPath} 不存在!`);
return;
}
// TODO: 实现复制文件夹目录及其子文件夹下的所有文件功能
}
步骤三:判断目标路径是否存在
然后,需要判断目标文件夹路径是否存在。如果不存在,则需要先创建目标文件夹路径。如果已经存在,则可以继续执行代码。
const fs = require("fs");
const path = require("path");
function copyDir(srcPath, targetPath) {
// 判断源路径是否存在
if (!fs.existsSync(srcPath)) {
console.log(`源路径 ${srcPath} 不存在!`);
return;
}
// 判断目标路径是否存在,不存在则创建目标路径
if (!fs.existsSync(targetPath)) {
fs.mkdirSync(targetPath);
}
// TODO: 实现复制文件夹目录及其子文件夹下的所有文件功能
}
步骤四:读取源文件夹下的所有文件和子文件夹
接下来,需要读取源文件夹下的所有文件和子文件夹。这里需要使用 fs.readdirSync() 方法,它可以同步地读取目录中包含的所有文件和子目录的名称,返回一个包含文件和子目录名称的数组。
const fs = require("fs");
const path = require("path");
function copyDir(srcPath, targetPath) {
// 判断源路径是否存在
if (!fs.existsSync(srcPath)) {
console.log(`源路径 ${srcPath} 不存在!`);
return;
}
// 判断目标路径是否存在,不存在则创建目标路径
if (!fs.existsSync(targetPath)) {
fs.mkdirSync(targetPath);
}
// 读取源路径中的所有文件和子文件夹
const files = fs.readdirSync(srcPath);
// TODO: 实现复制文件夹目录及其子文件夹下的所有文件功能
}
步骤五:循环遍历文件和子文件夹,并实现复制
接下来,需要循环读取到的文件和子文件夹,并实现复制。对于子文件夹,需要递归调用 copyDir() 函数。对于文件,则可以使用 fs.copyFileSync() 方法实现复制。
const fs = require("fs");
const path = require("path");
function copyDir(srcPath, targetPath) {
// 判断源路径是否存在
if (!fs.existsSync(srcPath)) {
console.log(`源路径 ${srcPath} 不存在!`);
return;
}
// 判断目标路径是否存在,不存在则创建目标路径
if (!fs.existsSync(targetPath)) {
fs.mkdirSync(targetPath);
}
// 读取源路径中的所有文件和子文件夹
const files = fs.readdirSync(srcPath);
// 循环遍历文件和子文件夹,并实现复制
for (const fileName of files) {
// 创建源文件/子文件夹的完整路径
const srcFilePath = path.join(srcPath, fileName);
// 创建目标文件/子文件夹的完整路径
const targetFilePath = path.join(targetPath, fileName);
// 获取文件/子文件夹的状态信息
const stat = fs.statSync(srcFilePath);
if (stat.isFile()) {
// 如果是文件,则直接复制
fs.copyFileSync(srcFilePath, targetFilePath);
console.log(`复制文件 ${srcFilePath} 到 ${targetFilePath}`);
} else if (stat.isDirectory()) {
// 如果是子文件夹,则递归调用 copyDir 函数
copyDir(srcFilePath, targetFilePath);
}
}
}
示例一:复制一个文件夹
copyDir("./src", "./dist");
这个示例将复制 ./src 文件夹及其子文件夹下的所有文件到 ./dist 文件夹中。
示例二:复制嵌套文件夹
copyDir("./src", "D:/backup/src");
这个示例将复制 ./src 文件夹及其子文件夹下的所有文件到 D:/backup/src 文件夹中。注意,目标文件夹路径可以是一个没有创建过的路径,代码会自动创建这个文件夹路径。
以上是通过 Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件 - Python技术站