[英]c# System.IO how do i find all the subfolders given a certain folder?
到目前為止,這是我所做的:
class Program
{
static void Main(string[] args)
{
DirectoryInfo startDirectory = new DirectoryInfo(@"C:\Users\Angelo\Desktop\ExerciseTest");
string output = "";
DirectoryInfo[] subDirectoryes = startDirectory.GetDirectories();
for (int i = 0; i < subDirectoryes.Length; i++)
{
output = output + subDirectoryes[i].ToString() + "\r\n";
}
Console.WriteLine(output);
Console.ReadLine();
}
}
結果,這給了我指定文件夾的第一個子文件夾,問題是我需要找到指定文件夾中的所有子文件夾,子子文件夾,子子文件夾等。以及文件,然后使用此縮進輸出:
我已經嘗試了很多次,但是我不知道怎么做,也許我錯過了一些命令(這是我第一次使用c#System.IO編程),能否請給我一些提示或告訴我我應該使用什么命令? 我要瘋了。
應該使用GetDirectories
的重載,以允許您定義搜索范圍:
DirectoryInfo[] subDirectoryes =
startDirectory.GetDirectories("*", SearchOption.AllDirectories);
這將獲取所有目錄,包括所有子目錄。
第一個參數是搜索文本過濾器,“ *”將找到所有文件夾。
帶有縮進的完整示例:
void Main()
{
var path = @"C:\Users\Angelo\Desktop\ExerciseTest";
var initialDepth = path.Split('\\').Count();
DirectoryInfo startDirectory = new DirectoryInfo(path);
StringBuilder sb = new StringBuilder();
DirectoryInfo[] subDirectoryes = startDirectory.GetDirectories("*", SearchOption.AllDirectories);
for (int i = 0; i < subDirectoryes.Length; i++)
{
var level = subDirectoryes[i].FullName.Split('\\').Count() - initialDepth;
sb.AppendLine($"{new string('\t', level)}{subDirectoryes[i].Name}");
}
Console.WriteLine(sb.ToString());
Console.ReadLine();
}
為了遍歷所有子文件夾,您需要遞歸函數。 基本上,您必須對遇到的所有目錄重復當前僅對根目錄應用的過程。
編輯:不得不花一點時間來提供此代碼示例:
class Program
{
static void Main(string[] args)
{
var basePath = @"C:\Users\Angelo\Desktop\ExerciseTest";
DirectoryInfo startDirectory = new DirectoryInfo(basePath);
IterateDirectory(startDirectory, 0);
Console.ReadLine();
}
private static void IterateDirectory(DirectoryInfo info, int level)
{
var indent = new string('\t', level);
Console.WriteLine(indent + info.Name);
var subDirectories = info.GetDirectories();
foreach(var subDir in subDirectories)
{
IterateDirectory(subDir, level + 1);
}
}
}
解釋一下,IterateDirectory的功能(根據要求):
IterateDirectory
方法,將level
提高1。 這是遍歷樹狀結構的相當標准的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.