Directory Size

Web üzerinde takip ettiğim blog’ların çoğunda bir klasörün boyutunun (size) alınması için kullanılan yöntem bulunulan klasörün içerisindeki dosyaların toplam size’ının, alt klasörler içinde bulunan folder’ların içinde bulunan dosyaların toplam size’larının tek tek hesaplanması sonucu bulunan size’ın toplamı ile hesaplanıyor.

Oysa DirectoryInfo class’ının GetFiles method’una searchPattern ve searchOption parametrelerinin düzgün olarak verilmesi, GetFiles method’unun alt klasörlerdeki dosyaları otomatik olarak getirmesini sağlayabiliyor.

Aşağıdaki kod’u bir class olarak kaydedin:

using System;
using System.IO;

namespace Sunali.SizeCalculators
{
   public static class DirectorySizeHelper
   {
      public static long GetSize(string path)
      {
         long m_Size = 0;

         DirectoryInfo m_DInfo = new DirectoryInfo(path);

         foreach (FileInfo m_FInfo in m_DInfo.GetFiles("*", SearchOption.AllDirectories))
            m_Size += m_FInfo.Length;

         return m_Size;
      }
   }
}

Sonra da başka bir yerde şu şekilde çalıştırın:


long m_TotalSize = Sunali.SizeCalculators.DirectorySizeHelper.GetSize(@"C:\folderName");

Sonuç olarak m_TotalSize değişkeni vermiş olduğunuz path içerisindeki dosyaların size’larının toplamını byte olarak verecektir.

2 Responses

  1. soner says:

    peki ya alt klasörler içerisindeki dosyaların boyutları ne olacak?
    recursive olarak döndürmek lazım bu fonksiyonu..
    saygılar..

  2. Coskun SUNALI says:

    Selam,

    “SearchOption” enum’u içerisinde bulunan “AllDirectories” item’ının comment’i şu şekildedir:

    Includes the current directory and all the subdirectories in a search operation.

    Dolayısı ile, recursive döngüye girmeniz gerekmemektedir.

    Teşekkürler.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.