Maison > développement back-end > C++ > Pourquoi Directory.Delete(myPath, true) échoue-t-il avec « Le répertoire n'est pas vide » ?

Pourquoi Directory.Delete(myPath, true) échoue-t-il avec « Le répertoire n'est pas vide » ?

Mary-Kate Olsen
Libérer: 2025-01-13 17:12:44
original
563 Les gens l'ont consulté

Why Does Directory.Delete(myPath, true) Fail with

Comprendre l'exception "Le répertoire n'est pas vide" lors de la suppression récursive d'un répertoire

Lors d'une tentative de suppression récursive d'un répertoire à l'aide de Directory.Delete( myPath, true), les utilisateurs peuvent rencontrer le message d'erreur « Le répertoire n'est pas vide. » Cela peut prêter à confusion étant donné que l'argument récursif implique que les sous-répertoires doivent également être supprimés.

Une raison potentielle de cette erreur est la présence de fichiers non supprimables dans la structure des répertoires. Pour résoudre ce problème, il est recommandé d'implémenter une fonction récursive qui supprime d'abord tous les fichiers des sous-répertoires, puis supprime tous les sous-répertoires et enfin supprime le répertoire racine.

Pour optimiser le processus de suppression, envisagez de supprimer l'attribut en lecture seule des fichiers avant de les supprimer, car cela peut empêcher les violations d'accès. Vous trouverez ci-dessous un exemple d'implémentation de la fonction de suppression récursive de répertoire :

public static void DeleteDirectory(string target_dir)
{
    string[] files = Directory.GetFiles(target_dir);
    string[] dirs = Directory.GetDirectories(target_dir);
    
    foreach (string file in files)
    {
        File.SetAttributes(file, FileAttributes.Normal);
        File.Delete(file);
    }

    foreach (string dir in dirs)
    {
        DeleteDirectory(dir);
    }
    
    Directory.Delete(target_dir, false);
}
Copier après la connexion

En outre, envisagez de mettre en œuvre des restrictions pour empêcher la suppression accidentelle de répertoires système critiques.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal