2013-02-27 1 views
0

Мне нужно удалить файлы с расширениями «.bak» и «.csv.bak». Я использую .net C#.Как удалить резервные копии файлов

Я пытался так:

 string srcDir = @"D:\Backup"; 

     string[] bakList = Directory.GetFiles(srcDir,".bak"); 

     if (Directory.Exists(srcDir)) 
     { 
      foreach (string f in bakList) 
      { 
       File.Delete(f); 
      } 
     } 

Но при отладке, массив bakList пуст.

Directory.GetFiles() не загружает имена файлов в массиве. Я не могу понять, что неправильно в моем кодировании.

+1

Изменить фильтр "* .bak", а не ".bak". –

+0

@JayRiggs я сделал это ... но тогда и эти файлы не удаляются в каталоге. Мой файл имеет форму «Data Logger [0] .csv.bak», следует ли использовать «* .csv.bak» или «* .bak» ?? – kousalyarajan

+0

Должен ли я создать источник и целевой каталог, чтобы я мог скопировать из src в dest и удалить файлы из папки dest. это обязательно? – kousalyarajan

ответ

2

Вы должны добавить *, прежде чем ваш .bak в GetFiles()

string srcDir = @"D:\Backup"; 
string[] bakList = Directory.GetFiles(srcDir,"*.bak"); 

if (Directory.Exists(srcDir)) 
{ 
    foreach (string f in bakList) 
    { 
     File.Delete(f); 
    } 
} 

Если вам нужно искать для обоих типов, может быть, он работает лучше

var files = Directory.GetFiles(srcDir, "*.*") 
      .Where(s => s.EndsWith(".bak")); 
+2

Лучше упомянуть об изменении, которое вы внесли, а также объяснить, как это помогает с вашим ответом. * Не легко различимо :) – ryadavilli

+0

Я сделал, спасибо за ваш совет. –

+0

@kousalyarajan Я оптимизировал фильтр для 'Directoty.GetFiles', проверьте его сейчас. –

0

Если имя файла

" Data Logger [2] .csv.bak ", перейдите к свойствам и проверьте тип файла. это будет примерно так:

«1 Файл (.1)». Файл имеет номер в качестве его конечного расширения. Поэтому я использовал вот так.

строка [] = Б.К. Directory.GetFiles (SRCDIR, "* .bak *.");

foreach (string f in bk) { Файл.Delete (f); }

его работы ...