.Net Framework Dosya Sistemine Genel Bakış

19 Ara

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.