2012-06-06 2 views
-6

Я пытаюсь использовать это, чтобы удалить все .htm-файлы в некоторых из нескольких каталогов, которые у меня есть, используя рекурсию. Пока он работает нормально только с одной папкой, но мне не удалось найти способ добавить несколько кодов в код. Есть ли способ добавить к каталогу больше каталогов, поэтому мне не нужно постоянно менять код каждый раз, когда я хочу, чтобы он удалял файлы в другом каталоге?Как добавить дополнительные каталоги в программу удаления файлов?

namespace ConsoleApplication 
{ 
    class Deleter 
    { 
     static void Main(string[] args) 
     { 
      string directorypath = @"C:\Public\"; 
      string[] directories = System.IO.Directory.GetDirectories(directorypath); 
      DeleteDirectories(directories); 
     } 
     private static void DeleteDirectories(string[] directories) 
     { 
      foreach (string directory in directories) 
      { 
       string[] files = System.IO.Directory.GetFiles(directory, "*.htm"); 
       DeleteFiles(files); 
       directories = System.IO.Directory.GetDirectories(directory); 
       DeleteDirectories(directories); 
      } 
     } 
     private static void DeleteFiles(string[] files) 
     { 
      foreach (string file in files) 
      { 
       FileInfo f = new FileInfo(file); 
       if (f.CreationTime < DateTime.Now) 
        f.Delete(); 
      } 
     } 
    } 
} 
+0

Какой у вас конкретный вопрос? – BrokenGlass

+0

«Больше каталогов» - это довольно бессмысленная вещь без дополнительного контекста. Какие каталоги вы хотите «добавить» к этому? – Oded

+0

можете ли вы добавить немного больше сведений о том, что вы на самом деле хотите удалить? Вы просто пытаетесь очистить все ваши .htm-файлы? – Chris

ответ

1

Вместо того, чтобы устанавливать свои перечисляемые (каталоги) в подкаталоги & надеясь рекурсию таким образом, создать новую ссылку с именем поддиректории. Таким образом, ваш цикл foreach будет выглядеть так:

... 
foreach(var directory in directories) 
{ 
string[] files = System.IO.Directory.GetFiles(directory, "*.htm"); 
DeleteFiles(files); 
var subDirectories = System.IO.Directory.GetDirectories(directory); 
DeleteDirectories(directories); 
{ 
.... 
+0

Спасибо, что ответили. Где я могу включить дополнительные подкаталоги? –

+0

Для этого вам просто нужно следовать советам asawyer и использовать аргумент args метода Main. Это аргумент командной строки, так что вы просто перечисляете все каталоги, которые вы хотите очистить, как cmd args. Вы должны действительно прочитать основы: http://msdn.microsoft.com/en-us/library/cb20e19t(v=vs.100).aspx – Chris

+0

Прошу прощения, что продолжаю задавать глупые вопросы, но можете ли вы быть немного более конкретный, я все еще немного смущен. –

Смежные вопросы