L'approche la plus canonique lorsque vous souhaitez supprimer des fichiers sur une certaine durée consiste à utiliser LastWriteTime du fichier (dernière fois que le fichier a été modifié):
Directory.GetFiles(dirName)
.Select(f => new FileInfo(f))
.Where(f => f.LastWriteTime < DateTime.Now.AddMonths(-3))
.ToList()
.ForEach(f => f.Delete());
(Ce qui précède est basé sur la réponse d'Uri mais avec LastWriteTime
.)
Chaque fois que vous entendez des gens parler de la suppression de fichiers plus anciens qu'une certaine période (ce qui est une activité assez courante), le faire en fonction de LastModifiedTime du fichier est presque toujours ce qu'ils recherchent.
Sinon, dans des circonstances très inhabituelles, vous pouvez utiliser les éléments ci-dessous, mais utilisez-les avec prudence car ils comportent des mises en garde.
CreationTime
.Where(f => f.CreationTime < DateTime.Now.AddMonths(-3))
L'heure à laquelle le fichier a été créé à l'emplacement actuel. Cependant, faites attention si le fichier a été copié, ce sera l'heure à laquelle il a été copié et CreationTime
sera plus récent que celui du fichier LastWriteTime
.
LastAccessTime
.Where(f => f.LastAccessTime < DateTime.Now.AddMonths(-3))
Si vous souhaitez supprimer les fichiers en fonction de la dernière fois qu'ils ont été lus, vous pouvez l'utiliser, mais il n'y a aucune garantie qu'il sera mis à jour car il peut être désactivé dans NTFS. Vérifiez fsutil behavior query DisableLastAccess
s'il est activé. Sous NTFS également, la mise à jour de LastAccessTime du fichier peut prendre jusqu'à une heure après son accès.