nodejs 获取本机用户目录,删除指定文件夹及文件

本文介绍了如何使用Node.js的fs模块实现异步删除文件夹及其内容的函数,包括递归处理子文件夹,以及处理EBUSY和ENOTEMPTY错误的重试逻辑。
摘要由CSDN通过智能技术生成

const fs = require('fs').promises;  
const path = require('path');  
  
// 设置要删除的文件夹路径  
const folderToDelete = path.join(__dirname, 'path/to/your/folder');  
  
// 递归删除文件夹内容的函数  
async function deleteFolderContents(folderPath) {  
  const files = await fs.readdir(folderPath, { withFileTypes: true });  
  
  for (const dirent of files) {  
    const filePath = path.join(folderPath, dirent.name);  
  
    if (dirent.isFile()) {  
      try {  
        await fs.unlink(filePath);  
        console.log(`File ${filePath} has been deleted.`);  
      } catch (error) {  
        if (error.code === 'EBUSY') {  
          console.error(`Error deleting file ${filePath}: ${error.message}. Retrying...`);  
          // 在这里可以添加重试逻辑  
        } else {  
          throw error;  
        }  
      }  
    } else if (dirent.isDirectory()) {  
      await deleteFolderContents(filePath); // 递归删除子文件夹内容  
    }  
  }  
}  
  
// 删除指定文件夹的函数  
async function deleteFolder(folderPath) {  
  try {  
    // 首先递归删除文件夹内的所有文件和子文件夹  
    await deleteFolderContents(folderPath);  
  
    // 然后删除文件夹本身  
    await fs.rmdir(folderPath);  
    console.log(`Folder ${folderPath} has been deleted.`);  
  } catch (error) {  
    if (error.code === 'EBUSY' || error.code === 'ENOTEMPTY') {  
      console.error(`Error deleting folder ${folderPath}: ${error.message}. Retrying...`);  
      // 在这里可以添加重试逻辑  
      // 例如,使用 setTimeout 等待一段时间后再次尝试删除  
    } else {  
      throw error;  
    }  
  }  
}  
  
// 调用函数删除指定的文件夹  
deleteFolder(folderToDelete)  
  .then(() => {  
    console.log('Folder deletion completed successfully.');  
  })  
  .catch((error) => {  
    console.error('An error occurred while deleting the folder:', error);  
  });

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值