deleteDirectory static method

Future<void> deleteDirectory(
  1. String path
)

删除文件夹

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