Zaman zaman C# ile geliştirdiğim ufak tefek yazılımlarda disk ile ilgili işlemlere gereksinim duyuyorum. Özellikle disk ile ilgili FileType, VolumeLabel, TotalSize, AvailableFreeSpace vs. değerlerin alınabilmesi için gerekli olan birkaç yöntem var.Msdn üzerindeki aramalarımda System.IO kullanılarak DriveInfo adlı sınıf yardımıyla kullanılan bir yöntemi buldum.Namespace öncesinde;using System;using System.IO;
satırlarının eklenmesi gerekiyor.Daha sonra diskleri listelemek için DriveInfo sınıfı içerisinde yeni bir nesne oluşturup sürücüleri GetDrives isteğiyle çağırıyoruz.DriveInfo[] allDrives = DriveInfo.GetDrives();
Bu işlem sayesinde sistem üzerinde tanımlı tüm diskleri retrieve ediyoruz.Diskleri listelemek ve disklere ait bilgileri ayrı ayrı olarak sınıflandırmak için foreach kullanabiliriz.foreach (DriveInfo d in allDrives){// Yazdırma işlemleriConsole.WriteLine(d.Name); // sürücü harf bilgisiConsole.WriteLine(d.DriveType); // sürücü tipi ( fixed, removable, network based vs.)Console.WriteLine(d.VolumeLabel); // sürücü etiket bilgisiConsole.WriteLine(d.DriveFormat); // sürücü disk yapısı ( fat32, ntfs vs.)Console.WriteLine(d.AvailableFreeSpace); // sürücü için kullanılabilir alan (byte cinsinden)Console.WriteLine(d.TotalSize); // sürücü için toplam alan bilgisi (byte cinsinden)}
Bu yöntemi uygularken bir ayrıntıya dikkat etmek gerekiyor 🙂 Kodu çalıştırdığınız bilgisayarda eğer “Removable” tipte diskler var ise, ve kodunuzu “try” ile kullanmıyorsanız debug edilmeyecektir.Removable tipte disk yapısında Label, AvailableFreeSpace, TotalSize vs. gibi bilgileri alamadığı için hata üretmesi de gayet normaldir. :)Eğer amacınız sadece Fixed tipte ( yani yazılabilir ve sabit disk ) disklerleri sorgulamak ise,if(DriveType == DriveType.Fixed)
kontrolünü yaptırmanız gerekiyor. Bu durumda sistem üzerinde Fixed tipteki diskleri listeleyerek diğerlerini exclude etmiş olacağız.