Ho una directory enorme di circa 500k file jpg e mi piacerebbe archiviare tutti i file più vecchi di una certa data. Attualmente, lo script richiede ore per essere eseguito.Copia file eseguibile in C#?
Questo ha molto a che fare con le prestazioni molto pessime dei server di archiviazione GoGrid, ma allo stesso tempo, sono sicuro che c'è un modo più efficiente in cui Ram/Cpu è saggio a realizzare ciò che sto facendo.
Ecco il codice che ho:.
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);
}
The Days() fa() roba è solo zucchero sintattico.
che si basa sul sistema operativo host, che dovrebbe essere di prim'ordine. –
Ya, la verità è che ci potrebbero essere milioni di file, non sono nemmeno in grado di ottenere un conteggio della directory tramite Windows Explorer a causa di problemi di prestazioni simili. – Scott
La grammatica nazista dice: "Performant" non è una parola :) –