Удалите файлы старше 3 месяцев в каталоге с помощью .NET - PullRequest
97 голосов
/ 08 февраля 2010

Я хотел бы знать (используя C #), как я могу удалять файлы в определенном каталоге старше 3 месяцев, но я думаю, что период дат может быть гибким.

Просто чтобы прояснить: я ищу файлы старше 90 дней, иными словами, файлы, созданные менее 90 дней назад, должны быть сохранены, все остальные удалены.

Ответы [ 16 ]

0 голосов
/ 18 ноября 2016

Я попробовал этот код, и он работает очень хорошо, надеюсь, что он ответил

namespace EraseJunkFiles
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo yourRootDir = new DirectoryInfo(@"C:\yourdirectory\");
            foreach (FileInfo file in yourRootDir.GetFiles())
                if (file.LastWriteTime < DateTime.Now.AddDays(-90))
                    file.Delete();
        }
    }
}
0 голосов
/ 29 апреля 2015
         //Store the number of days after which you want to delete the logs.
         int Days = 30;

          // Storing the path of the directory where the logs are stored.
           String DirPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Substring(6) + "\\Log(s)\\";

          //Fetching all the folders.
            String[] objSubDirectory = Directory.GetDirectories(DirPath);

            //For each folder fetching all the files and matching with date given 
            foreach (String subdir in objSubDirectory)     
            {
                //Getting the path of the folder                 
                String strpath = Path.GetFullPath(subdir);
                //Fetching all the files from the folder.
                String[] strFiles = Directory.GetFiles(strpath);
                foreach (string files in strFiles)
                {
                    //For each file checking the creation date with the current date.
                    FileInfo objFile = new FileInfo(files);
                    if (objFile.CreationTime <= DateTime.Now.AddDays(-Days))
                    {
                        //Delete the file.
                        objFile.Delete();
                    }
                }

                //If folder contains no file then delete the folder also.
                if (Directory.GetFiles(strpath).Length == 0)
                {
                    DirectoryInfo objSubDir = new DirectoryInfo(subdir);
                    //Delete the folder.
                    objSubDir.Delete();
                }

            }
0 голосов
/ 07 ноября 2014
            system.IO;

             List<string> DeletePath = new List<string>();
            DirectoryInfo info = new DirectoryInfo(Server.MapPath("~\\TempVideos"));
            FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray();
            foreach (FileInfo file in files)
            {
                DateTime CreationTime = file.CreationTime;
                double days = (DateTime.Now - CreationTime).TotalDays;
                if (days > 7)
                {
                    string delFullPath = file.DirectoryName + "\\" + file.Name;
                    DeletePath.Add(delFullPath);
                }
            }
            foreach (var f in DeletePath)
            {
                if (File.Exists(F))
                {
                    File.Delete(F);
                }
            }

используется при загрузке страницы, веб-сервисе или любом другом использовании.

Моя концепция - 7 дней, я должен удалить файл папки без использования БД

0 голосов
/ 03 ноября 2014

Нечто подобное

            foreach (FileInfo file in new DirectoryInfo("SomeFolder").GetFiles().Where(p => p.CreationTime < DateTime.Now.AddDays(-90)).ToArray())
                File.Delete(file.FullName);
0 голосов
/ 08 февраля 2010

Кроме того, вы можете использовать File.GetCreationTime Method , если вам нужно удалить файлы на основе дат создания.

0 голосов
/ 08 февраля 2010

вам просто нужно FileInfo -> CreationTime

, а затем просто рассчитать разницу во времени.

в app.config вы можете сохранить значение TimeSpan того, сколько лет должен быть удален файл

также проверьте метод DateTime Subtract .

удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...