C # Удаление файлов - PullRequest
       5

C # Удаление файлов

3 голосов
/ 02 августа 2010

В своем коде я сейчас сохраняю документы в папке на сервере.Если документ временный, я добавляю «_temp» к имени файла.При загрузке страницы я хочу проверить папку сервера, где хранятся эти документы, и я хочу удалить любой из временных документов.т.е. файлы, оканчивающиеся на «_temp».

Каков наилучший способ сделать это?

Ответы [ 3 ]

4 голосов
/ 02 августа 2010
string[] files = 
Directory.GetFiles
  (@"c:\myfolder\", "*_temp.txt", SearchOption.TopDirectoryOnly); 

или с помощью linq

var files = from f in Directory.GetFiles((@"c:\MyData\SomeStuff")
    where f.Contains("_temp")
    select f;

Как только вы получите все файлы, вам нужно будет перебрать результаты и удалить их один за другим.Однако это может быть дорого для сайта asp.net.Также вам нужно убедиться, что одновременные запросы не вызывают исключений!

Я бы рекомендовал хранить временные файлы в одном каталоге, а не помещать их в каталог, который используется совместно с не временными файлами.Просто для ясности и душевного спокойствия.

4 голосов
/ 02 августа 2010

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

В любом случае, вы можете использовать Directory.GetFiles для поиска имен файловсоответствие конкретному шаблону.Или, если вы не хотите экспериментировать с правильным шаблоном, и файлов в любом случае не будет много, вы можете просто вызвать перегрузку без шаблона и выполнить фильтрацию самостоятельно.

0 голосов
/ 02 августа 2010
string[] myFiles = Directory.GetFiles(@"C:\path\files");

foreach (string f in myFiles)
{
    File.Delete(f);
}

Или, если вы хотите работать с FileInfo (хотя это звучит так, как будто вы не знаете, но никогда не знаете ...), а не только с именами файлов, вы можете создать объект DirectoryInfoа затем позвоните GetFiles()

DirectoryInfo di = new DirectoryInfo(@"c:\path\directory");
FileInfo[] files = di.GetFiles("*_temp.txt");

 foreach (FileInfo f in files)
 {
     f.Delete();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...