const fs = require('fs'); const path = require('path'); const {handle} = require("./handle_cjs"); async function mvFile(file, targetPath, newFileName, maxRename = 10 , renameTotal = 0){ try { // 判断路径是否存在,不存在则创建 let err, exists; [err] = await handle(fs.promises.mkdir(targetPath, {recursive: true})); if (err) { return [err, null]; } // 拼接新的文件路径 let newFilePath = path.join(targetPath, newFileName); let ext = null; let name = null; let newName = ''; // 判断文件是否存在 [err, exists] = await handle(fs.existsSync(newFilePath)); if (err) { return [err, null]; } // 如果文件存在,则重命名在最后加上 _n n为数字 if (exists) { renameTotal++;// 1 if (renameTotal >= maxRename) { return [{message: `重命名次数超过最大值`}, null]; } ext = path.extname(newFileName); name = path.basename(newFileName, ext) newName = `${name}_${renameTotal}${ext}`; newFilePath = path.join(targetPath, newName); [err, exists] = await handle(fs.existsSync(newFilePath)); if (err) { return [err, null]; } if(exists){ return await mvFile(file, targetPath, newFileName, maxRename, renameTotal); } } // console.log(file); // 移动文件 [err] = await handle(fs.promises.rename(file.filepath, newFilePath)); if (err) { return [err, null]; } return [null, newName || newFileName]; } catch (e) { return [e, null]; } } async function rmFile(filePath){ // 判断是否为文件夹 let err, stats ,res; [err, stats] = await handle(fs.promises.stat(filePath)); if(err){ return [err,null]; } if(stats.isDirectory()){ return [{message:`${filePath} 为文件夹`},null]; } // 删除文件 [err,res] = await handle(fs.promises.unlink(filePath)); if(err){ return [err,null]; } return [null,res]; } module.exports = { mvFile, rmFile }