2013-11-26 128 views
0

C#如何獲取當前文件夾路徑的所有子文件夾?例如,我有一個公共文件夾是一個父文件夾。所以在Public文件夾我有圖片文件夾,並在圖片文件夾我有AA,BB,CC,...文件夾。C#如何獲取當前文件夾路徑的所有子文件夾

這裏可能是遞歸嗎?

P/S:我想要得到的結果,如樹視圖:

Public 

    --Images 

    ----AA 

    ----BB 

    ----CC 
+0

你試過這[一](http://stackoverflow.com/questions/16523402/c-sharp-load-folder-names)? – spajce

+0

謝謝。但是我讀的所有東西都無法幫助我。我的意思是我想獲得子文件夾的子文件夾,...當前的父文件夾。 – HICURIN

回答

1

這是我的理解是要列出低於給定的子目錄只包含文件的路徑。

static IEnumerable<string> GetSubdirectoriesContainingOnlyFiles(string path) 
{ 
    return from subdirectory in Directory.GetDirectories(path, "*", SearchOption.AllDirectories) 
    where Directory.GetDirectories(subdirectory).Length == 0 
    select subdirectory; 
} 

或者你也可以使用這個。

DirectoryInfo dInfo = new DirectoryInfo(<path to dir>); 
DirectoryInfo[] subdirs = dInfo.GetDirectories(); 
+0

謝謝@lllaya。就像我試過的方式一樣。 – HICURIN

0

試試這個:

String[] dirs= System.IO.Directory.GetDirectories("C:\\"); 

       foreach(string str in dirs) 
        Console.WriteLine(str); 
0

試試這個

Dictionary<string, string> dicData = new Dictionary<string, string>(); 
    private void processDirectory(string startLocation) 
    { 
     foreach (var directory in Directory.GetDirectories(startLocation)) 
     { 
      DirectoryInfo dr = new DirectoryInfo(directory); 
      { 
       if (!dicData.ContainsKey(dr.Parent.Name)) 
        dicData.Add(dr.Parent.Name, dr.Name); 
       else 
        dicData[dr.Parent.Name] += "," + dr.Name; 
      } 
      processDirectory(directory); 
     } 
    } 

A --> B , C 
B --> X --> Y -->Z 
C --> P --> Q 
1

使用微軟的Ix-Main包:

static IEnumerable<string> EnumerateSubdirs(string path) 
    { 
     return EnumerableEx.Expand(
        Directory.EnumerateDirectories(path), 
        subPath => Directory.EnumerateDirectories(subPath)); 
    } 

Expand將遞歸應用的方法來收集,廣度優先返回每個項目。所以,如果你在「公共」有傳,它會給你:

Public\Images 
Public\Images\AA 
Public\Images\BB 
Public\Images\CC 

如果你想包括頂層文件夾,這是很多容易的事:

static IEnumerable<string> EnumerateSubdirs(string path) 
    { 
     var subDirs = EnumerableEx.Expand(
        Directory.EnumerateDirectories(path), 
        subPath => Directory.EnumerateDirectories(subPath)); 

     return EnumerableEx.Return(path).Concat(subDirs); 
    } 

會導致哪些在:

Public 
Public\Images 
Public\Images\AA 
Public\Images\BB 
Public\Images\CC 
相關問題