155 votes

Supprimer les fichiers de plus de 3 mois dans un répertoire à l'aide .NET

Je voudrais savoir (à l'aide de C#) comment je peux supprimer les fichiers dans un répertoire de plus de 3 mois, mais je suppose que la date de la période pourrait être flexible.

Juste pour être clair: je suis à la recherche pour les fichiers qui sont âgés de plus de 90 jours, en d'autres termes les fichiers créés à moins de 90 jours doivent être conservés, tous les autres supprimés.

320voto

Steve Danner Points 11604

Quelque chose comme ceci outta le faire.

using System.IO; 

string[] files = Directory.GetFiles(dirName);

foreach (string file in files)
{
   FileInfo fi = new FileInfo(file);
   if (fi.LastAccessTime < DateTime.Now.AddMonths(-3))
      fi.Delete();
}

108voto

Uri Abramson Points 884

Voici une 1-liner lambda:

Directory.GetFiles(dirName)
         .Select(f => new FileInfo(f))
         .Where(f => f.LastAccessTime < DateTime.Now.AddMonths(-3))
         .ToList()
         .ForEach(f => f.Delete());

29voto

Samuel Neff Points 35554

Pour ceux qui aiment à la sur-utilisation de LINQ.

(from f in new DirectoryInfo("C:/Temp").GetFiles()
 where f.CreationTime < DateTime.Now.Subtract(TimeSpan.FromDays(90))
 select f
).ToList()
    .ForEach(f => f.Delete());

14voto

Voici un extrait de la façon de trouver le temps de création des fichiers dans le répertoire et trouver ceux qui ont été créés il y a 3 mois (90 jours pour être exact):

    DirectoryInfo source = new DirectoryInfo(sourceDirectoryPath);

    // Get info of each file into the directory
    foreach (FileInfo fi in source.GetFiles())
    {
        var creationTime = fi.CreationTime;

        if(creationTime < (DateTime.Now- new TimeSpan(90, 0, 0, 0)))
        {
            fi.Delete();
        }
    }

3voto

Keith Bloom Points 1564

Le GetLastAccessTime de propriété sur le Système.IO.Le fichier doit aider.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X