У меня есть огромный каталог около 500 тыс. Jpg-файлов, и я хотел бы архивировать все файлы, которые старше определенной даты. В настоящее время для выполнения сценария требуется несколько часов.Выполняется копирование файла в C#?
Это связано с очень плохой работой серверов хранения GoGrid, но в то же время я уверен, что есть способ более эффективно использовать Ram/Cpu для выполнения того, что я делаю.
Вот код, у меня есть:.
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);
}
Дни() s назад() материал просто синтаксический сахар.
Это зависит на операционной системе хоста, которая должна быть первоклассной. –
Ya, правда, там могут быть миллионы файлов, я не могу даже получить счет каталога через Windows Explorer из-за подобных проблем с производительностью. – Scott
Грамматика Nazi говорит: «Performant» - это не слово :) –