2016-12-30 315 views
0

我需要在給定的文件夾路徑中搜索文件夾是否存在或不存在。請給我建議你的想法。如何從給定文件夾路徑獲取文件夾路徑?

例如:

  1. 我所提供的路徑爲「E:\ TestSource
  2. 在這種 「TestSource」,我有 「樣品」 文件夾;
  3. 在該 「樣品」文件夾,我有「詳細信息」文件夾
  4. 現在我提供的文字爲「樣本」。
  5. 我需要搜索「樣本」文件夾中。

如何獲得「Details」文件夾的完整路徑?輸入: E:\ TestSource \ Sample \ Details。

由於提前

回答

2

使用.Net DirectoryInfo類。有了這個,你將能夠動態地查看子目錄。 MSDN Documentation

DirectoryInfo mainDirectory = new DirectoryInfo("E:\\TestSource"); 

foreach(DirectoryInfo subDirectory in mainDirectory.GetDirectories()) 
{ 
    Console.WriteLine(subDirectory.FullName); 

    //go another layer deep or write a recursive method 
    foreach(DirectoryInfo sub in subDirectory.GetDirectories()) 
    { 
     Console.WriteLine(sub.FullName); 
    } 
} 
+0

了'DirectoryInfo'類的'.Name'屬性會給你的目錄名,爲了讓你有使用'.FullName'屬性,而不是 –

+0

@取消幸運感謝路徑。 – user7351608

+0

Coool。!很高興幫助您 –

2

希望你正在尋找的東西,如:

string givenPath = @"E:\TestSource"; 
string searchFolder = "sample"; 
if (Directory.Exists(givenPath)) 
{ 
    string pathToSample = Directory.EnumerateDirectories(givenPath, searchFolder, SearchOption.TopDirectoryOnly) 
            .FirstOrDefault(x => x != ""); 

} 

如果你要搜索子文件夾以及(讓搜索文本是Details),那麼你必須改變SearchOptionSearchOption.AllDirectories在這種情況下,變量searchFolder"Details"進行初始化,那麼你將得到的輸出爲E:\TestSource\Sample\Details.

這裏要考慮的另一個案例是,假設你可能有N個文件夾名稱爲Details的子文件夾在不同層次上,那麼FirstOrDefault會給你第一個找到的結果,如果你需要所有文件夾路徑意味着你應該遍歷結果如下所示:FirstOrDefault

foreach (string folderPath in Directory.EnumerateDirectories(givenPath, searchFolder, SearchOption.AllDirectories)) 
{ 
    // iterating the list 
}