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

C# में फोल्डर का साइज़ कैसे कैलकुलेट करें

C# में फोल्डर साइज़ कैलकुलेट करना

फोल्डर का टोटल साइज़ पाने के लिए सभी फाइल्स के साइज़ का योग करें, सबडायरेक्टरीज़ में रिकर्सिवली।

मुख्य क्लासेस

  • DirectoryInfo: डायरेक्टरी जानकारी और ऑपरेशन्स।
  • FileInfo: फाइल जानकारी (Length प्रॉपर्टी = बाइट्स में साइज़)।
  • Directory.EnumerateFiles(): लेज़ी फाइल एन्यूमरेशन (मेमोरी कुशल)।
  • Directory.EnumerateDirectories(): सबडायरेक्टरीज़ एन्यूमरेट करें।

सरल LINQ दृष्टिकोण

using System;
using System.IO;
using System.Linq;

class Program {
    static void Main() {
        string folderPath = @"D:\Projects";
        
        DirectoryInfo dir = new DirectoryInfo(folderPath);
        
        // सभी फाइल्स (सबडायरेक्टरीज़ सहित) का साइज़ योग
        long totalSize = dir.EnumerateFiles("*", SearchOption.AllDirectories)
                            .Sum(file => file.Length);
        
        Console.WriteLine($"Total size: {totalSize} bytes");
        Console.WriteLine($"Total size: {totalSize / 1024.0 / 1024:F2} MB");
    }
}

रिकर्सिव मैन्युअल दृष्टिकोण (अधिक कंट्रोल)

using System;
using System.IO;

class Program {
    static void Main() {
        long size = GetDirectorySize(@"D:\Projects");
        Console.WriteLine($"Size: {size} bytes ({size/1024/1024} MB)");
    }
    
    static long GetDirectorySize(string path) {
        long size = 0;
        try {
            // इस डायरेक्टरी की फाइल्स
            foreach (string file in Directory.EnumerateFiles(path)) {
                size += new FileInfo(file).Length;
            }
            // सबडायरेक्टरीज़ रिकर्सिवली
            foreach (string dir in Directory.EnumerateDirectories(path)) {
                size += GetDirectorySize(dir);
            }
        }
        catch (UnauthorizedAccessException) {
            // एक्सेस डिनायड - स्किप
        }
        catch (PathTooLongException) {
            // पाथ बहुत लंबा - स्किप
        }
        return size;
    }
}

Directory क्लास के अन्य उपयोगी मेथड्स

मेथडविवरण
CreateDirectory(path)सभी डायरेक्टरीज़ बनाता है (पैरेंट्स सहित)
Delete(path, recursive)डायरेक्टरी डिलीट करता है (recursive=true से सबट्री)
Exists(path)डायरेक्टरी मौजूद है?
GetFiles(path, pattern)फाइल पाथ्स का एरे (ईगर)
EnumerateFiles(path, pattern)लेज़ी IEnumerable (बड़े फोल्डर्स के लिए बेहतर)
GetDirectories(path)सबडायरेक्टरी पाथ्स
Move(source, dest)डायरेक्टरी मूव/रीनेम

नोट्स

  • EnumerateFiles + SearchOption.AllDirectories सबसे सरल है लेकिन एक्सेप्शन पर पूरी तरह फेल हो सकता है।
  • रिकर्सिव मैन्युअल दृष्टिकोण एक्सेप्शन हैंडलिंग (UnauthorizedAccess, PathTooLong) की अनुमति देता है।
  • नेटवर्क ड्राइव्स/सिम्बॉलिक लिंक्स पर सावधानी बरतें (अनंत लूप संभव)।
  1. - पायथन का उपयोग करके डायरेक्टरी की परमिशन कैसे बदलें?

    chmod कमांड उपलब्ध प्लेटफॉर्म पर, आप chmod कमांड को इस तरह कॉल कर सकते हैं: >>> import subprocess >>> subprocess.call([chmod, -R, +w, my_folder]) यदि आप os मॉड्यूल का उपयोग करना चाहते हैं, तो आपको इसे रिकर्सिवली लिखना होगा: import os def change_permissions_recursive(path, mode):

  1. - पायथन का उपयोग करके डायरेक्टरी की परमिशन कैसे जांचें?

    आप डायरेक्टरी परमिशन की जांच के लिए मोड्स के साथ os.access(path, mode) का उपयोग कर सकते हैं, जिसमें पढ़ने, लिखने और निष्पादन अनुमतियों के लिए मोड होते हैं। लिखने में सक्षम होने के लिए आपको निष्पादन अनुमति की भी जांच करनी होगी। उदाहरण के लिए, >>> import os >>> os.access(my_folder,

  1. - पायथन का उपयोग करके डायरेक्टरी को रिकर्सिवली कैसे हटाएं?

    यदि आप एक फ़ोल्डर को उसकी सभी फ़ाइलों और फ़ोल्डरों सहित हटाना चाहते हैं, तो आप फ़ोल्डर (या ट्री) को इस प्रकार हटा सकते हैं: >>> import shutil >>> shutil.rmtree(my_folder)