Самый простой способ проверить, существует ли файл в подпапке - PullRequest
0 голосов
/ 14 октября 2011

Я собираюсь получить все папки в папке следующим образом:

foreach (DirectoryInfo directory in root.GetDirectories())

Теперь я хочу проверить все файлы в каждой из этих папок индивидуально для файла XML. Если файл XML существует, яхочу что-то сделать.

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

Я знаю, что это основа:

   if (File.Exists("*.xml"))
        {

        }

но это не работает?

Ответы [ 4 ]

2 голосов
/ 14 октября 2011

Попробуйте этот метод, если вы действительно хотите что-то сделать с файлом XML. Если вы просто проверяете, существует ли какой-либо xml-файл, я бы пошел другим путем:

foreach (DirectoryInfo directory in root.GetDirectories())
{
    foreach(string file in Directory.GetFiles(directory.FullName, "*.xml"))
    {
      //if you get in here then do something with the file
      //an "if" statement is not necessary.
    }
}

http://msdn.microsoft.com/en-us/library/wz42302f.aspx

0 голосов
/ 14 октября 2011
    foreach (DirectoryInfo directory in root.GetDirectories())
    {
        // What you have here would call a static method on the File class that has no knowledge 
        // at all of your directory object, if you want to use this then give it a fully qualified path
        // and ignore the directory calls altogether
        //if (File.Exists("*.xml"))

        FileInfo[] xmlFiles = directory.GetFiles("*.xml");
        foreach (var file in xmlFiles)
        {
          // do whatever   
        }
    }
0 голосов
/ 14 октября 2011

В качестве альтернативы вы можете использовать Directory.GetFiles с шаблоном поиска и действием на найденные файлы ...

var existing = Directory.GetFiles(root, "*.xml", SearchOption.AllDirectories);

//...

foreach(string found in existing) {
    //TODO: Action upon the file etc..
}
0 голосов
/ 14 октября 2011

Метод Directory.GetFiles :

if (Directory.GetFiles(@"C:\","*.xml").Length > 0) {
    // Do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...