it-swarm.com.de

C # löscht einen Ordner und alle Dateien und Ordner in diesem Ordner

Ich versuche, einen Ordner und alle Dateien und Ordner in diesem Ordner zu löschen. Ich verwende den folgenden Code und erhalte den Fehler Folder is not empty. Gibt es Vorschläge, was ich tun kann?

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);
}
71
Jamie
dir.Delete(true); // true => recursive delete
122
Tommy Carlier

Lesen Sie das Handbuch:

Directory.Delete-Methode (String, Boolean)

Directory.Delete(folderPath, true);
74
Morfildur

Versuchen: 

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

Dadurch werden alle Dateien und Ordner unter "Pfad" rekursiv gelöscht, sofern Sie über die entsprechenden Berechtigungen verfügen.

20
jinsungy

Äh, wie wär's mit dem Aufruf von Directory.Delete(path, true);?

6
Dmitri Nesteruk

Die Methode Directory.Delete hat einen rekursiven booleschen Parameter. Sie sollte das tun, was Sie brauchen

4
Paolo Tedesco

Du solltest benutzen:

dir.Delete(true);

zum rekursiven Löschen des Inhalts dieses Ordners. Siehe MSDN DirectoryInfo.Delete () - Überladungen .

3
pyrocumulus

Versuche dies.

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");
        }
    }
}
2
Rosidin Bima
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);
    }
}
0
dekdev

Versuche dies: 

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.
0
Prince