फाइल्स प्राप्त करने के लिए, C# Directory.GetFiles मेथड प्रदान करता है।
Directory.GetFiles निर्दिष्ट खोज पैटर्न से मेल खाने वाली सभी फाइलों के नाम (उनके पथ सहित) लौटाता है, और वैकल्पिक रूप से सबडायरेक्टरीज़ को खोजता है।
नीचे दिए गए उदाहरण में * उस स्थिति में शून्य या अधिक वर्णों से मेल खाता है।
- SearchOption.TopDirectoryOnly - केवल टॉप डायरेक्टरीज़ खोजता है
- SearchOption.AllDirectories - सभी टॉप डायरेक्टरीज़ और सब डायरेक्टरीज़ खोजता है
- FileInfo - फाइल जानकारी जैसे Length, Name प्राप्त करता है
उदाहरण 1: सभी फाइल्स (सबडायरेक्टरीज़ सहित)
static void Main(string[] args)
{
string rootPath = @"C:\Users\Koushik\Desktop\TestFolder";
var files = Directory.GetFiles(rootPath, "*.*", SearchOption.AllDirectories);
foreach (string file in files)
{
Console.WriteLine(file);
}
Console.ReadLine();
}
आउटपुट
C:\Users\Koushik\Desktop\TestFolder\TestFolderMain\TestFolderMain.txt
C:\Users\Koushik\Desktop\TestFolder\TestFolderMain 1\TestFolderMain1.txt
C:\Users\Koushik\Desktop\TestFolder\TestFolderMain 2\TestFolderMain2.txt
C:\Users\Koushik\Desktop\TestFolder\TestFolderMain 2\TestFolderMainSubDirectory\TestFolderSubDirectory.txt
उदाहरण 2: केवल टॉप डायरेक्टरी
static void Main(string[] args)
{
string rootPath = @"C:\Users\Koushik\Desktop\TestFolder";
var files = Directory.GetFiles(rootPath, "*.*", SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
Console.WriteLine(file);
}
Console.ReadLine();
}
आउटपुट
C:\Users\Koushik\Desktop\TestFolder\Topdirectory.txt
उदाहरण 3: फाइल आकार के साथ
static void Main(string[] args)
{
string rootPath = @"C:\Users\Koushik\Desktop\TestFolder";
var files = Directory.GetFiles(rootPath, "*.*", SearchOption.AllDirectories);
foreach (string file in files)
{
var info = new FileInfo(file);
Console.WriteLine($"{Path.GetFileName(file)}: {info.Length} bytes");
}
Console.ReadLine();
}
आउटपुट
Topdirectory.txt: 0 bytes
TestFolderMain.txt: 0 bytes
TestFolderMain1.txt: 10 bytes
TestFolderMain2.txt: 20 bytes
उन्नत: मानव-पठनीय आकार के साथ
static string GetHumanReadableSize(long bytes)
{
string[] sizes = { "B", "KB", "MB", "GB", "TB" };
int order = 0;
double size = bytes;
while (size >= 1024 && order < sizes.Length - 1)
{
order++;
size /= 1024;
}
return $"{size:0.##} {sizes[order]}";
}
// उपयोग
foreach (string file in files)
{
var info = new FileInfo(file);
Console.WriteLine($"{Path.GetFileName(file)}: {GetHumanReadableSize(info.Length)}");
}
आधुनिक विकल्प (.NET Core 2.1+)
// EnumerateFiles - मेमोरी कुशल (स्ट्रीमिंग)
foreach (string file in Directory.EnumerateFiles(rootPath, "*.*", SearchOption.AllDirectories))
{
var info = new FileInfo(file);
Console.WriteLine($"{Path.GetFileName(file)}: {info.Length} bytes");
}
// पैटर्न मिलान के साथ
var csFiles = Directory.EnumerateFiles(rootPath, "*.cs", SearchOption.AllDirectories);
मुख्य बिंदु
GetFiles- सरणी लौटाता है (सभी मेमोरी में लोड)EnumerateFiles- IEnumerable लौटाता है (आलसी मूल्यांकन, बड़ी डायरेक्टरीज़ के लिए बेहतर)- हमेशा
FileInfoका उपयोग मेटाडेटा (आकार, निर्माण समय, आदि) के लिए करें - पथ के लिए
@वर्बेटिम स्ट्रिंग्स का उपयोग करें