डायरेक्टरीज़ प्राप्त करने के लिए C# Directory.GetDirectories मेथड प्रदान करता है। Directory.GetDirectories मेथड निर्दिष्ट डायरेक्टरी में निर्दिष्ट खोज पैटर्न से मेल खाने वाले सबडायरेक्टरीज़ के नाम (उनके पथ सहित) लौटाता है, और वैकल्पिक रूप से सबडायरेक्टरीज़ को खोजता है।
नीचे दिए गए उदाहरण में * उस स्थिति में शून्य या अधिक वर्णों से मेल खाता है।
- SearchOption.TopDirectoryOnly - केवल टॉप डायरेक्टरीज़ प्राप्त करता है
- SearchOption.AllDirectories - सभी टॉप डायरेक्टरीज़ और सब डायरेक्टरीज़ प्राप्त करता है
नोट: rootPath आपके सिस्टम का रूट पथ होगा इसलिए एक टेस्ट फोल्डर बनाएं और रूट पथ का उपयोग तदनुसार करें।
उदाहरण 1: केवल टॉप-लेवल डायरेक्टरीज़
static void Main(string[] args)
{
string rootPath = @"C:\Users\Koushik\Desktop\TestFolder";
string[] dirs = Directory.GetDirectories(rootPath, "*", SearchOption.TopDirectoryOnly);
foreach (string dir in dirs)
{
Console.WriteLine(dir);
}
Console.ReadLine();
}
आउटपुट
C:\Users\Koushik\Desktop\TestFolder\TestFolderMain
C:\Users\Koushik\Desktop\TestFolder\TestFolderMain 1
C:\Users\Koushik\Desktop\TestFolder\TestFolderMain 2
उदाहरण 2: सभी डायरेक्टरीज़ (रिकर्सिव)
static void Main(string[] args)
{
string rootPath = @"C:\Users\Koushik\Desktop\TestFolder";
string[] dirs = Directory.GetDirectories(rootPath, "*", SearchOption.AllDirectories);
foreach (string dir in dirs)
{
Console.WriteLine(dir);
}
Console.ReadLine();
}
आउटपुट
C:\Users\Koushik\Desktop\TestFolder\TestFolderMain
C:\Users\Koushik\Desktop\TestFolder\TestFolderMain 1
C:\Users\Koushik\Desktop\TestFolder\TestFolderMain 2
C:\Users\Koushik\Desktop\TestFolder\TestFolderMain 2\TestFolderMainSubDirectory
उन्नत: EnumerateDirectories (मेमोरी कुशल)
// .NET Core 2.1+ / .NET Framework 4.0+
// आलसी मूल्यांकन - बड़ी डायरेक्टरी संरचनाओं के लिए बेहतर
foreach (string dir in Directory.EnumerateDirectories(rootPath, "*", SearchOption.AllDirectories))
{
Console.WriteLine(dir);
}
// फिल्टर के साथ
var netDirs = Directory.EnumerateDirectories(rootPath, "*.net*", SearchOption.AllDirectories);
डायरेक्टरी जानकारी के साथ
var dirInfo = new DirectoryInfo(rootPath);
foreach (var dir in dirInfo.EnumerateDirectories("*", SearchOption.AllDirectories))
{
Console.WriteLine($"Name: {dir.Name}");
Console.WriteLine($"Full Path: {dir.FullName}");
Console.WriteLine($"Created: {dir.CreationTime}");
Console.WriteLine($"Attributes: {dir.Attributes}");
Console.WriteLine("---");
}
आम पैटर्न
| आवश्यकता | कोड |
|---|---|
| केवल तत्काल सबडायरेक्टरीज़ | |
| सभी सबडायरेक्टरीज़ रिकर्सिवली | |
| पैटर्न मिलान | |
| मेमोरी कुशल | |
| मेटाडेटा के साथ |
एक्सेप्शन हैंडलिंग
try
{
var dirs = Directory.GetDirectories(rootPath, "*", SearchOption.AllDirectories);
}
catch (UnauthorizedAccessException ex)
{
Console.WriteLine($"Access denied: {ex.Message}");
}
catch (DirectoryNotFoundException ex)
{
Console.WriteLine($"Directory not found: {ex.Message}");
}
catch (PathTooLongException ex)
{
Console.WriteLine($"Path too long: {ex.Message}");
}