| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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
- }
|