deleteDirectory static method
删除文件夹
Implementation
static Future<void> deleteDirectory(String path) async {
final directory = Directory(path);
// 1. 如果一开始就不存在,直接返回,省事
if (!directory.existsSync()) return;
try {
// 2. 尝试递归删除
directory.deleteSync(recursive: true);
} catch (e) {
// 3. 核心修复在这里:
// 如果报错是因为“找不到文件(PathNotFoundException)”或者“系统错误码 2 (ENOENT)”,
// 这意味着在我们想删除它的时候,它已经把自己“删没了”(或者软链接失效了)。
// 既然我们的目的是让它消失,那么这种情况应当被视为“成功”。
if (e is PathNotFoundException ||
(e is FileSystemException && e.osError?.errorCode == 2)) {
print(
"Warning: Directory '$path' disappeared during deletion or contained broken symlinks. Ignoring.",
);
} else {
// 如果是权限不足(Access Denied)等其他严重错误,才抛出异常
print("Error deleting '$path': $e");
rethrow;
}
}
}