Dosya, klasör ve sürücü işlemleriyle ilgili sınıflar System.IO ad uzayında bulunmaktadır. Dosya sistemi ile ilgili snıflar bilgilendirme ve hizmet amaçlı olarak iki grupta incelenmektedir.
ilgi amaçlı sınıfların çoğu FileSystemInfo sınıfından türetilmiştir. Bu sınıflar dosya sistemi nesneleri (dosya, klasör ve sürücüler) hakkında bütün bilgileri vermektedir. Bilgi sınıfları FileInfo ve DirectoryInfo adında iki sınıftır.
Ayrıca DriveInfo sınıfı da sistemdeki bir sürücüyü temsil etmektedir. Ancak bir bilgilendirme sınıfıdır. FileSystemInfo sınıfından türetilmediği için de sürücü silme gibi bazı davranışları göstermez.
Hizmet amaçlı sınıflar dosya, dizin ve dosya yolları üzerinde bazı işlemleri gerçekleştirmek için bazı statik metodlar sunarlar. Hizmet sınıfları File, Directory ve Path sınıflarıdır.
FileSystemInfo Sınıfı
Bu sınıf dosya sistemindeki bilgilendirme sınıflarına temel oluşturur. FileSystemInfo sınıfının özellikleri ve metodları aşağıdaki gibidir.
Özellikler: Attribures, CreationDate, Exist, Extension, FullName, LastAccessTime, LastWriteTime, Name
Metodlar: Delete, Refresh
FileInfo Sınıfı
Dosya sistemindeki tek bir dosyaya erişmek için gerekli işlevselliği sağlar.
Özellikler: Dictionary, DirectoryName, IsReadOnly, Length
Metodlar: AppendText, CopyTo, Create, CreateText, Decrypt, Encrypt, MoveTo, Open, OpenRead, OpenText, OpenWrite, Replace
Örnek 1: Dosya bilgisine erişmek.
FileInfo file = new FileInfo(@"c:\test.txt"); if (file.Exists) { Console.WriteLine("File Name: {0} ", file.Name); Console.WriteLine("File Path: {0} ", file.FullName); Console.WriteLine("File Size: {0} bytes", file.Length); }
Örnek 2: C sürücüsündeki bir dosyayı uygulamanın çalıştığı debug dizinine kopyalamak.
FileInfo file = new FileInfo(@"c:\test.txt"); file.CopyTo("copyOfText.txt");
Örnek 3: Klasördeki dosyalara erişmek
DirectoryInfo info = new DirectoryInfo(@"c:\windows"); foreach (FileInfo item in info.GetFiles()) { Console.WriteLine("File Name: {0}", item.Name); }
DriveInfo Sınıfı
DriveInfo sınıfı, dosya sistemindeki bir sürücünün bilgilerine ukaşmayı sağlar.
Özellikler: AvailableFreeSpace, DriveFormat, DriveType, IsReady, Name, RootDirectory, TotalFreeSpace, TotalSize, VolumeLabel
Metodlar: GetDrives(Sistemdeki bütün sürücüleri verir)
DriveType Enumerasyonu
Sürücünün olabileceği tipleri tutan bir temsili numaralandırmadır.
CDRom, Fixed, Network, NoRootDirectory, Ram, Removable, Unknown
Örnek:
DriveInfo[] drives = DriveInfo.GetDrives(); foreach (var item in drives) { Console.WriteLine("Drive Name: {0}", item.Name); Console.WriteLine("Drive Type: {0}", item.DriveType); }
Path Sınıfı
Path sınıfı dosya sistemindeki dosya yollarına erişmeyi ve gerekli işlemleri yapmayı sağlar.
Metodlar: ChangeExtension, Combine, GetDirectoryName, GetExtension, GetFileName, GetFileNameWithoutExtension, GetFullPath, GetPathRoot, GetRandomFilneName, GetTempFileName, GetTempPath, HasExtension, IsPathRooted
Örnek:
string targePath = @"c:\text.txt"; Console.WriteLine("Path {0}", targePath); Console.WriteLine("Extension: {0}", Path.GetExtension(targePath)); Console.WriteLine("Changed Extension as {0}", Path.ChangeExtension(targePath, "bak"));
FileSystemWatcher sınıfı
Bu sınıf dosya sisteminde istenen dizini dinlemeye yarar. Yani dizinde bir dosya veya klasör olşturulduğunda, silindiğinde ya da değiştirildiğinde bu olayları yakalamak mümkündür.
Özellikler: EnableRaisingEvents, Filter, IncludeSubdirectories, NotifyFilter, Path
Metodlar: WaitingForChanged
Olaylar: Changed, created, Deleted, Renamed
Örnek:
FileSystemWatcher watcher = new FileSystemWatcher(@"d:\"); watcher.EnableRaisingEvents = true; watcher.Created += new FileSystemEventHandler(watcher_Changed); watcher.Deleted += new FileSystemEventHandler(watcher_Changed); Console.ReadLine();
Olay gerçekleştiğinde çalışacak metod ise şu şekilde olmalıdır.
static void watcher_Changed(object sender,FileSystemEventArgs e) { Console.WriteLine("Directory changed({0}): {1}", e.ChangeType, e.FullPath); }
Umarım faydalı bir yazı olmuştur.