C# verwijder een map en alle bestanden en mappen in die map

Ik probeer een map en alle bestanden en mappen in die map te verwijderen, ik gebruik de onderstaande code en ik krijg de foutmelding Folder is not empty, eventuele suggesties over wat ik kan doen?

try
{
  var dir = new DirectoryInfo(@FolderPath);
  dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly;
  dir.Delete();
  dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[i].Index);
}
catch (IOException ex)
{
  MessageBox.Show(ex.Message);
}

Antwoord 1, autoriteit 100%

dir.Delete(true); // true => recursive delete

Antwoord 2, autoriteit 69%

Lees de handleiding:

Directory.Delete-methode (string, boolean)

Directory.Delete(folderPath, true);

Antwoord 3, autoriteit 13%

Probeer:

System.IO.Directory.Delete(path,true)

Hiermee worden alle bestanden en mappen onder “pad” recursief verwijderd, ervan uitgaande dat u hiervoor de machtigingen hebt.


Antwoord 4, autoriteit 3%

Err, hoe zit het met het aanroepen van Directory.Delete(path, true);?


Antwoord 5, autoriteit 3%

De Directory.Deletemethode heeft een recursieve booleaanse parameter, het zou moeten doen wat je nodig hebt


Antwoord 6, autoriteit 2%

U moet gebruiken:

dir.Delete(true);

om ook de inhoud van die map recursief te verwijderen. Zie MSDN DirectoryInfo.Delete() overbelasting.


Antwoord 7, autoriteit 2%

Probeer dit.

namespace EraseJunkFiles
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo yourRootDir = new DirectoryInfo(@"C:\somedirectory\");
            foreach (DirectoryInfo dir in yourRootDir.GetDirectories())
                    DeleteDirectory(dir.FullName, true);
        }
        public static void DeleteDirectory(string directoryName, bool checkDirectiryExist)
        {
            if (Directory.Exists(directoryName))
                Directory.Delete(directoryName, true);
            else if (checkDirectiryExist)
                throw new SystemException("Directory you want to delete is not exist");
        }
    }
}

Antwoord 8, autoriteit 2%

Voor degenen onder u die de DirectoryNotFoundException tegenkomen, voeg deze controle toe:

if (Directory.Exists(path)) Directory.Delete(path, true);

Antwoord 9

public void Empty(System.IO.DirectoryInfo directory)
{
    try
    {
        logger.DebugFormat("Empty directory {0}", directory.FullName);
        foreach (System.IO.FileInfo file in directory.GetFiles()) file.Delete();
        foreach (System.IO.DirectoryInfo subDirectory in directory.GetDirectories()) subDirectory.Delete(true);
    }
    catch (Exception ex)
    {
        ex.Data.Add("directory", Convert.ToString(directory.FullName, CultureInfo.InvariantCulture));
        throw new Exception(string.Format(CultureInfo.InvariantCulture,"Method:{0}", ex.TargetSite), ex);
    }
}

Antwoord 10

Probeer dit:

foreach (string files in Directory.GetFiles(SourcePath))
{
   FileInfo fileInfo = new FileInfo(files);
   fileInfo.Delete(); //delete the files first. 
}
Directory.Delete(SourcePath);// delete the directory as it is empty now.

Other episodes