C# Klasör Boyutunu Bulma

Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde bir klasörün boyutunu bulmayı anlatacağım. Hadi başlayalım !
Öncelikle Visual Studio aracılığıyla bi tane proje oluşturup, işlem yapmak istediğimiz formun kodlarına arasına girelim. Işimiz dosyalarla olduğu için System.IO kütüphanesini kullanacağız. Tabiki bu kütüphaneyi sayfamızda çağırmamız gerek. Bunun için de sayfanın en başına
using System.IO;
kod satırını ekleyelim. Kullanacağımız sınıfın adı ise Directory ve FileInfo sınıfları olacak. Directory sınıfını klasör içinde bulunan dosyaları listelemek için ve FileInfo sınıfını ise her bir dosyanın boyutunu bulmak için kullanacağız. Klasör içindeki dosyaları listeleme konusunu daha önce anlattığım için tekrardan anlatmıyorum fakat bilmeyenler ve o yazımızı okumayanlar buraya tıklayarak yazımıza ulaşabilir. Eveett öncelikle klasör içindeki dosyaları string dizisi içine atayalım, klasör olarak masaüstünde bulunan deneme isimli klasörü kullanacağız (aslında böyle bir klasör yok ama varmış gibi düşünüyoruz). Kodumuz şöyle olmalı;
string[] dosyalar = Directory.GetFiles("c:/users/kullanici/desktop/deneme", "*.*", SearchOptions.AllDirectories);
Evet dosyaları bulduk ve şimdi her birinin ayrı ayrı boyutlarını bulup toplayalım ve bu sayede klasörün boyutunu bulalım. Klasörün kendisinin herhangi bir boyutu olmadığı için sadece içerisindeki dosyaların boyutunu bulup toplamamız yeterli olacaktır.
long toplamBoyut = 0;
foreach(string dosya in dosyalar)
toplamBoyut += new FileInfo(dosya).Length;
Hoca sen naptın burda diyenler olacaktır, şöyle anlatayım; Bizim dosyalar isimli string dizimizde biliyorsunuz ki klasörün içinde bulunan dosyaların yolu var ve bu diziyi foreach ile dönerek şuradaki yazımızda anlattığımız üzere FileInfo sınıfını kullanarak döngünün her bir adımındaki ilgili dosyanın boyutunu bulduk ve toplamBoyut değişkeninin üzerine ekledik. Bu sayede istediğimiz şeyi, yani klasörün toplam boyutunu bulmuş olduk. Fakat bulduğumuz bu boyut byte türünde, megabyte yada gigabyte olsun istersek, bunu elle yapmamız gerekiyor. Yani
- 1 KB = 1024 byte
- 1 MB = 1024 KB
- 1 GB = 1024 MB
olduğuna göre aralarında dönüşüm yapabiliriz. O da şöyle olur;
var kb = toplamBoyut / 1024;
var mb = toplamBoyut / (1024 * 1024);
var gb = toplamBoyut / (1024 * 1024 * 1024);
Bu sayede istediğimiz şekle dönüştürebiliriz.
Bu dersimizde bu kadardı, tüm C# derslerimize ulaşmak için buraya tıklayabilirsiniz. Herkese hayırlı günler.