Ich habe eine Liste der Zeichenfolge, die relative Pfade sind. Ich habe auch eine Zeichenfolge, die Root-Pfad für diese Dateien enthält. Jetzt habe ich sie so bin zu löschen:Schnellste Möglichkeit, Millionen von Dateien zu löschen
foreach (var rawDocumentPath in documents.Select(x => x.RawDocumentPath))
{
if (string.IsNullOrEmpty(rawDocumentPath))
{
continue;
}
string fileName = Path.Combine(storagePath, rawDocumentPath);
File.Delete(fileName);
}
das Problem ist, dass ich Path.Combine
für jede Datei aufrufen, und es ist langsam genug. Wie kann ich diesen Code beschleunigen? Ich kann nicht ganze Ordner löschen, ich kann das aktuelle Verzeichnis nicht ändern (weil es ein ganzes Programm betrifft) ...
Ich brauche so etwas wie eine Klasse, die schnell mehrere Dateien im angegebenen Verzeichnis löschen kann.
sehen kann nicht alles, was Ihren Code verlangsamen würde, um den Engpass bei Dateioperationen unter normalen Bedingungen immer die E/A-Operationen . Sie könnten versuchen, hier Multi-Threading zu verwenden, z. documents.AsParallel(). ForAll() –
@MichaelSander Ich weiß, aber Festplatte kann Löschvorgänge in Batches organisieren, wissen Sie, Befehlswarteschlangen und so weiter. –
Wenn Sie wüssten, dass es "alles" von etwas ist, könnten Sie einen "* .doc" -Ansatz machen, aber wenn Sie etwas Bestimmtes tun müssen, sind Sie begrenzter – BugFinder