.NET Framework Énumérer les fichiers antérieurs à une quantité spécifiée


Exemple

Cet extrait de code est une fonction d'assistance permettant d'énumérer tous les fichiers plus anciens qu'un âge spécifié. Il est utile, par exemple, pour supprimer d'anciens fichiers journaux ou d'anciennes données en cache.

static IEnumerable<string> EnumerateAllFilesOlderThan(
                               TimeSpan maximumAge,
                               string path,
                               string searchPattern = "*.*",
                               SearchOption options = SearchOption.TopDirectoryOnly)
{
    DateTime oldestWriteTime = DateTime.Now - maximumAge;

    return Directory.EnumerateFiles(path, searchPattern, options)
        .Where(x => Directory.GetLastWriteTime(x) < oldestWriteTime);
}

Utilisé comme ceci:

var oldFiles = EnumerateAllFilesOlderThan(TimeSpan.FromDays(7), @"c:\log", "*.log");

Peu de choses à noter:

  • La recherche est effectuée à l'aide de Directory.EnumerateFiles() au lieu de Directory.GetFiles() . L'énumération est active, vous n'avez donc pas besoin d'attendre que toutes les entrées du système de fichiers aient été récupérées.
  • Nous vérifions l'heure de la dernière écriture, mais vous pouvez utiliser l'heure de création ou la dernière heure d'accès (par exemple, pour supprimer les fichiers cachés inutilisés , notez que le temps d'accès peut être désactivé).
  • La granularité n'est pas uniforme pour toutes ces propriétés (temps d'écriture, temps d'accès, temps de création), consultez MSDN pour plus de détails à ce sujet.