2011-10-13 31 views
0

我會得到一個文件夾內的所有文件夾,如下所示:最簡單的方式,如果文件中的子文件夾中存在

foreach (DirectoryInfo directory in root.GetDirectories()) 

我現在要檢查所有文件中的每個那些文件夾individualally的一個XML如果XML文件存在,我想做點什麼。

什麼是最好的方式去做這件事?

我知道這是基礎:

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

     } 

,但不工作?

+1

不工作怎麼樣? –

+0

它不起作用,因爲該文件夾包含一個xml文件,但它在跳過if語句時跳過了它。 – mameesh

+1

我已經在下面寫了一個更詳細的回覆,但是如果你想要「教一個人釣魚」的答案......考慮一下你正在迭代的DirectoryInfos並沒有把你正在迭代的靜態調用File類(即每次通過該循環時File都做同樣的事情,它不關心你在切換DirectoryInfos) – heisenberg

回答

2

如果要真正地嘗試此方法用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

Directory.GetFiles方法:

if (Directory.GetFiles(@"C:\","*.xml").Length > 0) { 
    // Do something 
} 
0

正如你可以使用Directory.GetFiles與在找到的文件搜索模式和行動的替代...

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

//... 

foreach(string found in existing) { 
    //TODO: Action upon the file etc.. 
} 
0
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 
     } 
    } 
相關問題