Если заявление, чтобы проверить, содержит ли папка файлы - PullRequest
0 голосов
/ 18 июня 2019

Мне нужен оператор if, чтобы проверить, содержит ли папка файлы . Я попробовал несколько вещей, но я не могу заставить его работать, если есть файлы в подпапке в корневой папке. Нужно ли иметь цикл , чтобы искать в подпапках ? Вот что у меня есть:

if(Directory.GetDirectories(oldDir).Length == 0 && Directory.GetFiles(oldDir).Length == 0)
{
   //do this
}

Я надеялся, что он подберет папки, в которых нет файлов. (есть подпапка или нет)

Ответы [ 2 ]

3 голосов
/ 18 июня 2019

Вам не нужно получать все файлы / каталогов с GetFiles (представьте, если мы хотим знать, есть ли у нас файлы в c:\). Мы можем попытаться начать перечисление файлов и проверить, есть ли у нас Any из них. Если мы хотим проверить подпапки , мы можем добавить SearchOption.AllDirectories параметр:

// Do we have any file - "*" in any directory or sub directory  
if (Directory.EnumerateFiles(oldDir, "*", SearchOption.AllDirectories).Any()) {    
  //do this
}
0 голосов
/ 18 июня 2019

Вы можете сделать это рекурсией следующим образом:

      public bool ContainsFiles(string dirName)
      {
         if (Directory.GetFiles(dirName).Any()) return true;
         return Directory.GetDirectories(dirName).Any(subDir => ContainsFiles(subDir));
      }
...