Maison >développement back-end >C++ >Pourquoi Directory.Delete(path, true) échoue-t-il et comment puis-je supprimer de manière récursive un répertoire dans .NET 3.5 ?

Pourquoi Directory.Delete(path, true) échoue-t-il et comment puis-je supprimer de manière récursive un répertoire dans .NET 3.5 ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-13 17:17:43930parcourir

Why Does Directory.Delete(path, true) Fail, and How Can I Recursively Delete a Directory in .NET 3.5?

Dépannage de la suppression récursive de répertoires dans .NET 3.5

L'erreur courante « System.IO.IOException : Le répertoire n'est pas vide » lors de l'utilisation de Directory.Delete(path, true) dans .NET 3.5 est trompeuse. Le paramètre true indique une suppression récursive, mais il ne gère pas automatiquement les fichiers dans le répertoire.

Pour supprimer de manière fiable un répertoire et son contenu de manière récursive, une fonction personnalisée est nécessaire :

<code class="language-csharp">public static void DeleteDirectoryRecursively(string targetDir)
{
    string[] files = Directory.GetFiles(targetDir);
    string[] dirs = Directory.GetDirectories(targetDir);

    foreach (string file in files)
    {
        File.SetAttributes(file, FileAttributes.Normal); // Remove read-only attributes
        File.Delete(file);
    }

    foreach (string dir in dirs)
    {
        DeleteDirectoryRecursively(dir); // Recursive call for subdirectories
    }

    Directory.Delete(targetDir, false); // Delete the directory itself
}</code>

Cette méthode améliorée supprime d'abord tous les attributs en lecture seule des fichiers, puis supprime chaque fichier individuellement. Il s'appelle récursivement pour gérer les sous-répertoires imbriqués avant de finalement supprimer le répertoire cible. Cela garantit une suppression complète et sans erreur. Il est recommandé de mettre en œuvre des restrictions d'accès pour éviter la suppression accidentelle des dossiers protégés par le système.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn