Löschen einer großen Anzahl (>100 KB) der Dateien, die mit c# unter Beibehaltung der Leistung in einer web-Anwendung?

Ich versuche zu entfernen, großen Anzahl von Dateien von einem Ort (von groß meine ich über 100000), wobei die Aktion ist initated von einer web-Seite. Offensichtlich, ich konnte einfach

string[] files = System.IO.Directory.GetFiles("path with files to delete");
foreach (var file in files) {
    IO.File.Delete(file);
}

Verzeichnis.GetFiles
http://msdn.microsoft.com/en-us/library/wz42302f.aspx

Diese Methode wurde bereits gepostet ein paar mal:
So löschen Sie alle Dateien und Ordner in einem Verzeichnis?
und
Löschen von Dateien aus dem Verzeichnis, wenn der Dateiname enthält ein bestimmtes Wort

Aber das problem mit dieser Methode ist, dass, wenn Sie sagen, hundert tausend Dateien wird es ein performance-Problem, wie es zu generieren, die alle filepaths zuerst, bevor die Schleife durch Sie.

Hinzu, wenn eine web-Seite wartet eine Antwort ab, eine Methode, die die Durchführung dieser, wie Sie sich vorstellen können, wird es Aussehen, ein bisschen Müll!

Einen Gedanken, den ich hatte war, um wrap up in ein asychrnonous web-service-Aufruf, und wenn es abgeschlossen es feuert wieder eine Antwort auf die web-Seite zu sagen, dass Sie entfernt wurden? Vielleicht setzen die delete-Methode in einem separaten thread? Oder vielleicht sogar eine separate batch-Prozess ausführen löschen?

Ich habe ein ähnliches Problem, wenn Sie versuchen, um die Anzahl der Dateien in einem Verzeichnis - wenn es enthält eine große Anzahl von Dateien.

Ich Frage mich, ob dies alles ein wenig übertrieben? I. e. gibt es eine einfachere Methode, um damit umzugehen? Jede Hilfe würde geschätzt werden.

  • Ich bin mir nicht sicher über C#, aber in der Regel keine so gute Idee, um große Anzahl von Dateien in einem einzigen Verzeichnis.
  • Sie haben erwähnt es selbst, asynchronous ist das Stichwort.
  • Zu "Sands" - Vertrauen Sie mir, ich habe nicht diese Entscheidung treffen!! 🙂
  • Ich denke, das ist genau, warum es nützlich sein würde, um eine performante Möglichkeit löschen eine große Anzahl von Dateien in einem einzigen Verzeichnis, falls Sie sich in dieser position.
InformationsquelleAutor Aim Kai | 2010-02-02
Schreibe einen Kommentar