Wie kann ich mit C# alle Dateien und Ordner aus einem Verzeichnis löschen, aber das Root-Verzeichnis beibehalten?
T
Wie kann ich mit C# alle Dateien und Ordner aus einem Verzeichnis löschen, aber das Root-Verzeichnis beibehalten?
Jede Methode, die ich versucht habe, ist irgendwann mit System.IO-Fehlern fehlgeschlagen. Die folgende Methode funktioniert mit Sicherheit, auch wenn der Ordner leer ist oder nicht, schreibgeschützt oder nicht, etc.
ProcessStartInfo Info = new ProcessStartInfo();
Info.Arguments = "/C rd /s /q \"C:\\MyFolder"";
Info.WindowStyle = ProcessWindowStyle.Hidden;
Info.CreateNoWindow = true;
Info.FileName = "cmd.exe";
Process.Start(Info);
Die Verwendung von statischen Methoden mit File und Directory anstelle von FileInfo und DirectoryInfo wird schneller sein. (siehe akzeptierte Antwort unter Was ist der Unterschied zwischen File und FileInfo in C#? ). Die Antwort wird als Dienstprogramm angezeigt.
public static void Empty(string directory)
{
foreach(string fileToDelete in System.IO.Directory.GetFiles(directory))
{
System.IO.File.Delete(fileToDelete);
}
foreach(string subDirectoryToDeleteToDelete in System.IO.Directory.GetDirectories(directory))
{
System.IO.Directory.Delete(subDirectoryToDeleteToDelete, true);
}
}
Der folgende Code bereinigt das Verzeichnis, lässt aber das Root-Verzeichnis dort (rekursiv).
Action<string> DelPath = null;
DelPath = p =>
{
Directory.EnumerateFiles(p).ToList().ForEach(File.Delete);
Directory.EnumerateDirectories(p).ToList().ForEach(DelPath);
Directory.EnumerateDirectories(p).ToList().ForEach(Directory.Delete);
};
DelPath(path);
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
s