El enfoque más canónico cuando se desea eliminar archivos durante un período determinado es utilizar el LastWriteTime del archivo (la última vez que se modificó el archivo):
Directory.GetFiles(dirName)
.Select(f => new FileInfo(f))
.Where(f => f.LastWriteTime < DateTime.Now.AddMonths(-3))
.ToList()
.ForEach(f => f.Delete());
(Lo anterior se basa en la respuesta de Uri pero con LastWriteTime
.)
Siempre que escuche a personas hablar sobre la eliminación de archivos con una antigüedad superior a un cierto período de tiempo (que es una actividad bastante común), hacerlo basándose en el LastModifiedTime del archivo es casi siempre lo que están buscando.
Alternativamente, para circunstancias muy inusuales, puede usar los siguientes, pero utilícelos con precaución ya que vienen con advertencias.
CreationTime
.Where(f => f.CreationTime < DateTime.Now.AddMonths(-3))
La hora en que se creó el archivo en la ubicación actual. Sin embargo, tenga cuidado si el archivo se copió, será la hora en que se copió y CreationTime
será más reciente que el archivo LastWriteTime
.
LastAccessTime
.Where(f => f.LastAccessTime < DateTime.Now.AddMonths(-3))
Si desea eliminar los archivos basándose en la última vez que se leyeron, puede usar esto, pero no hay garantía de que se actualizará, ya que se puede deshabilitar en NTFS. Verifique fsutil behavior query DisableLastAccess
si está encendido. Además, en NTFS, puede tardar hasta una hora en actualizar el LastAccessTime del archivo después de acceder a él.