Performantes Kopieren von Dateien in C #?
Ich habe ein riesiges Verzeichnis mit ca. 500k JPG-Dateien und möchte alle Dateien archivieren, die älter als ein bestimmtes Datum sind. Derzeit dauert die Ausführung des Skripts Stunden.
Dies hat viel mit der sehr schlechten Leistung der GoGrid-Speicherserver zu tun, aber gleichzeitig bin ich sicher, dass Ram / CPU effizienter ist, um das zu erreichen, was ich tue.
Hier ist der Code, den ich habe:
var dirInfo = new DirectoryInfo(PathToSource);
var fileInfo = dirInfo.GetFiles("*.*");
var filesToArchive = fileInfo.Where(f =>
f.LastWriteTime.Date < StartThresholdInDays.Days().Ago().Date
&& f.LastWriteTime.Date >= StopThresholdInDays.Days().Ago().Date
);
foreach (var file in filesToArchive)
{
file.CopyTo(PathToTarget+file.Name);
}
Das Days (). Ago () Zeug ist nur syntaktischer Zucker.