Home Contact RSS

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.

soner said,

June 18, 2007 @ 09:33

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

Coskun SUNALI said,

July 20, 2007 @ 17:00

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.

RSS feed for comments on this post · TrackBack URI

Leave a Comment