2010-05-14 117 views

回答

0

嘗試這樣的遞歸方法....

public string SearchForFile(string directory, string filename) 
    { 
     string file = ""; 

     //Look in this directory first 
     string[] files = Directory.GetFiles(directory, filename); 
     if (files.Count() > 0) 
      file = files[0]; 
     else //Not found here, so try the sub-directories 
     { 
      foreach (string subDirectory in Directory.GetDirectories(directory)) 
      { 
       file = SearchForFile(subDirectory, filename); 
       if (file != "") 
        break; 
      } 
     } 

     return file; 
    } 
0

這是你如何在C#中做到這一點: http://support.microsoft.com/kb/303974

的關鍵是遞歸。你的方法必須爲它找到的每個文件夾調用它自己。所以它會越來越深入到調用堆棧中,但只能調用它自己。例如,考慮你有一個文件夾a與文件夾aaab裏面。這些文件夾內有文件夾aaaaba。然後您將首先循環所有內容a,即aaab。然後,您將調用相同的方法併爲它們執行相同的操作,直到沒有更多的文件夾。

0

我認爲你可以使用

DirectoryInfo di = new DirectoryInfo(path); 
FileInfo[] files = di.GetFiles(searchPattern, SearchOption.AllDirectories); 

如說,在MSDN上SearchOption.AllDirectories