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);
});
nodejs 获取本机用户目录,删除指定文件夹及文件
最新推荐文章于 2024-08-11 00:18:52 发布
本文介绍了如何使用Node.js的fs模块实现异步删除文件夹及其内容的函数,包括递归处理子文件夹,以及处理EBUSY和ENOTEMPTY错误的重试逻辑。
摘要由CSDN通过智能技术生成