C#如何獲取當前文件夾路徑的所有子文件夾?例如,我有一個公共文件夾是一個父文件夾。所以在Public文件夾我有圖片文件夾,並在圖片文件夾我有AA,BB,CC,...文件夾。C#如何獲取當前文件夾路徑的所有子文件夾
這裏可能是遞歸嗎?
P/S:我想要得到的結果,如樹視圖:
Public
--Images
----AA
----BB
----CC
C#如何獲取當前文件夾路徑的所有子文件夾?例如,我有一個公共文件夾是一個父文件夾。所以在Public文件夾我有圖片文件夾,並在圖片文件夾我有AA,BB,CC,...文件夾。C#如何獲取當前文件夾路徑的所有子文件夾
這裏可能是遞歸嗎?
P/S:我想要得到的結果,如樹視圖:
Public
--Images
----AA
----BB
----CC
這是我的理解是要列出低於給定的子目錄只包含文件的路徑。
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();
謝謝@lllaya。就像我試過的方式一樣。 – HICURIN
試試這個:
String[] dirs= System.IO.Directory.GetDirectories("C:\\");
foreach(string str in dirs)
Console.WriteLine(str);
試試這個
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
使用微軟的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
你試過這[一](http://stackoverflow.com/questions/16523402/c-sharp-load-folder-names)? – spajce
謝謝。但是我讀的所有東西都無法幫助我。我的意思是我想獲得子文件夾的子文件夾,...當前的父文件夾。 – HICURIN