Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में डायरेक्टरी के अंदर सभी फाइल्स, सब-फाइल्स और उनका आकार कैसे प्राप्त करें

फाइल्स प्राप्त करने के लिए, 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 का उपयोग मेटाडेटा (आकार, निर्माण समय, आदि) के लिए करें
  • पथ के लिए @ वर्बेटिम स्ट्रिंग्स का उपयोग करें
  1. C# में किसी पथ से सभी फ़ाइलों और फ़ोल्डर्स को कैसे डिलीट करें? C# में किसी पथ से सभी फ़ाइलों और फ़ोल्डर्स को कैसे डिलीट करें?

    सभी फ़ोल्डर्स और उनकी संबंधित डायरेक्टरीज को डिलीट करने के लिए हम C# में उपलब्ध System.IO नेमस्पेस का उपयोग कर सकते हैं। DirectoryInfo() क्लास एक डायरेक्टरी में सभी सब डायरेक्टरीज और फ़ाइल का विवरण प्रदान करती है। उदाहरण आइए एक डायरेक्टरी डेमो पर विचार करें जिसमें दो सब डायरेक्टरीज हैं और कुछ फ़ाइल

  1. जावा में डायरेक्टरी में JPG फाइलों की सूची कैसे प्राप्त करें जावा में डायरेक्टरी में JPG फाइलों की सूची कैसे प्राप्त करें

    File क्लास का String[] list(FilenameFilter filter) मेथड वर्तमान (File) ऑब्जेक्ट द्वारा दर्शाए गए पथ में सभी फाइलों और डायरेक्टरीज के नामों वाला एक String सरणी वापस करता है। लेकिन रिटर्न की गई सरणी में फाइल नाम होते हैं जो निर्दिष्ट फिल्टर के आधार पर फिल्टर किए जाते हैं। FilenameFilter जावा में एक इं

  1. macOS पर फ़ाइल खोज में महारत हासिल करें: फ़ाइलों और फ़ोल्डरों को ढूंढने और रिकवर करने की व्यापक गाइड macOS पर फ़ाइल खोज में महारत हासिल करें: फ़ाइलों और फ़ोल्डरों को ढूंढने और रिकवर करने की व्यापक गाइड

    macOS एक ऐसा ऑपरेटिंग सिस्टम है जिसमें सुपर सहज नेविगेशन, सॉर्टिंग, और फ़ाइल सिस्टम संगठन है। गैर-तकनीकी-प्रेमी उपयोगकर्ताओं या Windows वातावरण से आने वाले उपयोगकर्ताओं के लिए भी, अपनी फ़ाइलों, फ़ोल्डरों, और ऐप्स का पता लगाना तेज़ और आसान है। वास्तव में, macOS उपयोगकर्ताओं को फ़ाइल नामों, तारीखों,