想知道Nodejs中雷士 windows 如何在新建文件夹时防止文件夹命名重复的逻辑
想知道Nodejs中雷士 windows 如何在新建文件夹时防止文件夹命名重复的逻辑
新加的文件夹自动追加了尾缀(1) 在网盘列表查询的时候怎么查改目录下所有重复的文件夹 删掉其中一个(3)之后也能最新文件夹名称不重复
说的比较乱 就是一个比较合理的防重复查询
2 回复
确实说的很乱。
在Node.js中,为了防止在新建文件夹时出现命名重复的情况,可以采取以下逻辑:
-
检查文件夹是否存在:在尝试创建文件夹之前,先检查目标路径是否已经存在同名文件夹。
-
处理冲突:如果文件夹已存在,可以附加一个后缀(如时间戳、UUID等)来生成新的唯一名称。
以下是一个示例代码,展示了如何实现上述逻辑:
const fs = require('fs').promises;
const path = require('path');
const crypto = require('crypto');
async function createUniqueFolder(basePath, folderName) {
let dirPath = path.join(basePath, folderName);
let counter = 1;
while (true) {
try {
await fs.access(dirPath); // 检查文件夹是否存在
// 如果存在,生成新的名称
dirPath = path.join(basePath, `${folderName}_${counter}`);
counter++;
} catch (err) {
if (err.code === 'ENOENT') { // 文件夹不存在,可以创建
break;
} else {
throw err; // 其他错误,抛出异常
}
}
}
// 创建文件夹
await fs.mkdir(dirPath);
console.log(`Folder created: ${dirPath}`);
}
// 示例调用
createUniqueFolder(__dirname, 'testFolder').catch(console.error);
这段代码首先尝试创建指定名称的文件夹,如果文件夹已存在,则在名称后添加一个递增的数字,直到找到一个不存在的名称,然后创建该文件夹。这样可以有效防止文件夹命名重复。