2015-07-10 5 views
-1

я имею папку с этими файлами:C# обнаружить посторонние файлы

  • image1.png
  • image2.png
  • image3.png
  • image4.png
  • image5.png

И мне нужно проверить, существует ли extraneou s файлов в этой папке, например, если я создаю example.file.css Мне нужно указать ошибку, должны быть только те файлы, которые перечислены выше. Итак, я создал нужную строку файлов:

string[] only_these_files = { 
    "image1.png", 
    "image2.png", 
    "image3.png", 
    "image4.png", 
    "image5.png" 
}; 

Теперь мне нужно найти посторонние файлы, но как? Спасибо сразу.

ответ

2

Использование Directory.GetFiles: https://msdn.microsoft.com/en-us/library/07wt70x2(v=vs.110).aspx

И сравните со списком разрешенных файлов.

string[] only_these_files = { 
     "image1.png", 
     "image2.png", 
     "image3.png", 
     "image4.png", 
     "image5.png" 
    }; 
    string[] fileEntries = Directory.GetFiles(targetDirectory); 

    List<String> badFiles = new List<string>(); 

    foreach (string fileName in fileEntries) 
     if (!only_these_files.Contains(fileName)) 
     { 
      badFiles.Add(fileName); 
     } 
+0

я думаю, что было бы полезно, если бы вы добавить пример кода –

+0

Спасибо так много, но я новичок в этом языке (C#), мне нужен код :( – Dewagg

+0

Конечно, GIMME секундочки. – Jonas

0

Это будет моя реализация с использованием лил»LINQ

 var onlyAllowedFiles = new List<string> 
     { 
      "image1.png", 
      "image2.png", 
      "image3.png", 
      "image4.png", 
      "image5.png" 
     }; 

     var path = ""; 
     var files = Directory.GetFiles(path); 

     var nonAllowedFiles = files.Where(f => onlyAllowedFiles.Contains(f) == false); 

Или же, если вы хотите только обнаружить наличие нелегальных файлов.

 var errorState = files.Any(f => onlyAllowedFiles.Contains(f) == false); 
+0

Спасибо, как я могу проверить это сейчас? Я пробовал что-то вроде этого: if (errorState == true) {MessageBox.Show («Пожалуйста, удалите недопустимые файлы!»);} И это не сработало для меня – Dewagg

+0

Зачем писать двойной ответ ..? – Jonas

+0

@ Джонас возился с ним, пока вы отвечали. Непреднамеренный, rly. Однако я думаю, что мое решение немного отличается. @Dewagg вам нужно будет заменить переменную пути каталогом, который вы проверяете, - как «var path = @» C: \ the \ path \ to \ your \ directory " –

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