Удаление файлов из папки - C#

Узнай цену своей работы

Формулировка задачи:

Уважаемые. Задача: Стоит вопрос удаления файлов из текущей из определенной папки. Каким образом программно это можно сделать? Суть проблемы: в папке имеется множество файлов, происходит считывание каждого из файлов, при этом для каждого файла создается дополнительных файл в котором содержится количество прочитанных строк для каждого файла. В итоге исходная папка растет в геометрической прогрессии. Идея: Удалить все промежуточные файлы(создаваемые) файлы, оставив при этом исходники файлов (исходные файлы), кроме последнего файла (на случай если он не успел прочитаться или возникли проблемы при считывании). Удаление следует произвести в 00:00:01 время, при этом предполагается, что считывание исходных файлов продолжится . Программный код: Исходный метод
class Program
    {
        static void Main(string[] args)
        {
            string[] files = Directory.GetFiles(Environment.CurrentDirectory, "*.txt");
 
            foreach (string str in files)            
            {
                ReadStringFromFile(str);// в этом методе создается промежуточный файл с расширением (.dat). Исходные файлы в txt формате  
            }
            Console.ReadKey(); ;
        }
  }

Решение задачи: «Удаление файлов из папки»

textual
Листинг программы
        static void DeleteOldFiles()
        {
            //Метод будет искать и удалять старые текстовые файлы кроме последнего по дате. Поиск выполняется по маске *_count.txt
            //определим рабочую папку
            DirectoryInfo path = new DirectoryInfo(Directory.GetCurrentDirectory());
            //получим все файлы по маске
            FileInfo[] files = path.GetFiles("*_count.txt");
            FileInfo lastFile = null;
            //сравниваем дату записи каждого файла с первым файлом
            DateTime dt1 = files[0].LastWriteTime;
            foreach (FileInfo fi in files)
            {
                Console.WriteLine(fi + ": " + fi.LastWriteTime);
            }
            foreach (FileInfo fi in files)
            {
                //если она больше то, перезаписываем
                if(fi.CreationTime > dt1)
                {
                    dt1 = fi.LastWriteTime;
                    lastFile = fi;
                }
            }
            Console.WriteLine(lastFile);
            //и, наконец, удаляем все остальные файлы
            for(int i = 0; i < files.Length; i++)
            {
                if(files[i] != lastFile)
                {
                    try
                    {
                        files[i].Delete();
                        Console.WriteLine(files[i] + " - удалён!");
                    }
                    catch (FieldAccessException ex) { }
                }
            }
            Console.ReadKey();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы