const fs = require('fs');
const path = require('path');
const util = require('util');
const unlink = util.promisify(fs.unlink);
const readdir = util.promisify(fs.readdir);
async function batchDeleteFiles(directory) {
let results = [];
try {
const files = await readdir(directory);
for (const file of files) {
const filePath = path.join(directory, file);
try {
await unlink(filePath);
results.push({ file: filePath, success: true });
} catch (error) {
results.push({ file: filePath, success: false, error: error.message });
}
}
} catch (error) {
results.push({ error: error.message });
}
return results;
}
// 使用示例
batchDeleteFiles('/your/directory/path')
.then(results => {
console.log('操作结果:', results);
})
.catch(error => {
console.error('整体操作出错:', error.message);
});
错误处理机制说明
- 外层try - catch:用于捕获
readdir
操作可能出现的错误,比如目录不存在等。如果发生错误,将错误信息记录到results
数组中并返回。
- 内层try - catch:在删除每个文件时,为了确保一个文件删除失败不影响其他文件的删除操作,使用
try - catch
块。如果删除文件成功,将该文件的路径和成功标志记录到results
数组;如果删除失败,将文件路径、失败标志以及错误信息记录到results
数组。
- 返回结果:最终返回的
results
数组包含了所有文件的操作结果,无论是成功还是失败都有详细记录,方便调用者了解整个批量操作的情况。