फ़ोल्डर को बाहर करने के लिए निर्देशिका और विकल्प में नीचे जाने के लिए अधिकतम lvl के साथ कुछ उन्नत संस्करण:
using System;
using System.IO;
class MainClass {
public static void Main (string[] args) {
var dir = @"C:\directory\to\print";
PrintDirectoryTree(dir, 2, new string[] {"folder3"});
}
public static void PrintDirectoryTree(string directory, int lvl, string[] excludedFolders = null, string lvlSeperator = "")
{
excludedFolders = excludedFolders ?? new string[0];
foreach (string f in Directory.GetFiles(directory))
{
Console.WriteLine(lvlSeperator+Path.GetFileName(f));
}
foreach (string d in Directory.GetDirectories(directory))
{
Console.WriteLine(lvlSeperator + "-" + Path.GetFileName(d));
if(lvl > 0 && Array.IndexOf(excludedFolders, Path.GetFileName(d)) < 0)
{
PrintDirectoryTree(d, lvl-1, excludedFolders, lvlSeperator+" ");
}
}
}
}
इनपुट निर्देशिका:
-folder1
file1.txt
-folder2
file2.txt
-folder5
file6.txt
-folder3
file3.txt
-folder4
file4.txt
file5.txt
फ़ंक्शन का आउटपुट (फ़ोल्डर 5 की सामग्री को lvl सीमा के कारण बाहर रखा गया है और फ़ोल्डर 3 की सामग्री को बाहर रखा गया है क्योंकि यह बहिष्कृत फ़ॉर्म्स में है):
-folder1
file1.txt
-folder2
file2.txt
-folder5
-folder3
-folder4
file4.txt
file5.txt