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.
peki ya alt klasörler içerisindeki dosyaların boyutları ne olacak?
recursive olarak döndürmek lazım bu fonksiyonu..
saygılar..
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.