Bu makalemizde File sınıfı ile dosya üzerinde ne gibi işlemler yapabileceğimizi göreceğiz.
File sınıfının bazı metotları Directory sınıfındaki metotlar ile aynıdır. Arasındaki fark Directory sınıfında klasörler üzerinde, File sınıfında ise dosyalar üzerinde çalışırsınız.
Aynı olan metotlar;
Exists(), Delete(),
GetCreationTime(),
GetLastAccessTime(),
GetLastWriteTime(),
Move(),
SetCreationTime(),
SetLastAccessTime(),
GetLastWriteTime().
Bu metotları Directory sınıfında işlemiştik. Makaleye gitmek için buraya tıklayın.
Bu metotların haricinde File sınıfı ile dosyalar üzerinde işlemler yapılabilmesi için bazı metotlar barındırır.
File.AppendText(string yol);
yol da belirtilen dosya için StreamWriter nesnesi döndürür. Bu nesneyi sonraki adımlarda göreceğiz.
File.Copy(string kaynak, string hedef);
kaynak da belirtilen dosya hedefe kopyalanır. Eğer hedefte aynı dosya var ise ikinci metodu kullanabiliriz.
File.Copy(string kaynak, string hedef, bool ustuneyaz);
Burada son parametre true verildiği zaman dosyanın üzerine yazar.
File.Create(string yol);
Belirtilen yol'da dosya oluşturur ve bu dosyaya ait FileStream nesnesini döndürür.
File.CreateText(string yol);
Belirtilen yolda üzerine yazmak için bir text dosyası oluşturur ve ilgili dosyaya ilişkin StreamWriter nesnesini döndürür.
File.GetAttributes(string yol);
belirtilen yoldaki dosyanın FileAttributes numaralandırması ile özelliği döndürülür.
FileAttributes numaralandırması aşağıdaki sembolleri(özellikleri) içerir:
Archive, Compressed, Device, Directory, Encryted, Hidden, Normal, NotContentIndexed, Offline, ReadOnly, ReparsePoint, SparseFile, System, Temporary
Örnek: Aşağıdaki program ile D sürücüsü içindeki bütün dosya ve klasörlerin özellikleri alınır.
// D sürücüsündeki bütün dosya ve klasörler string[] diziye aktarılıyor
string[] dizi = Directory.GetFileSystemEntries(@"D:\";
// dizi komple kontrol ediliyor
foreach (string i in dizi)
{
// i. klasör veya dosya ekrana yazdırılıyor
Console.Write(i + "=>";
// i. dosyanın özellikleri ekrana yazıdırılıyor
Console.WriteLine(File.GetAttributes(i));
}
File.Open(string yol, FileMode a);
File.Open(string yol, FileMode a, FileAccess b);
File.Open(string yol, FileMode a, FileAccess b, FileShare c);
Open() metodu belirtilen yoldaki dosyayı açar ve ilgili dosyaya ilişkin FileStream nesnesini döndürür. FileMode, FileAccess ve FileShare, System.IO isim alanlarında bulunan numaralandırmalardır. Bunlar dosyanın ne şekilde açılacağını ve dosya üzerinde ne şekilde işlem yapılacağını bildirir.
FileMode Numaralandırılması:
Append: Açılan dosyanın sonuna ekleme yapmak için kullanılır. Eğer dosya yok ise dosya oluşturulur.
Create: Yeni bir dosya oluşturmak için kullanılır. Eğer belirtilen dosya var ise üzerine yazılır.
CreateNew: Yeni bir dosya oluşturmak için kullanılır, ancak belirtilen dosya var ise çalışma zamanında hata verilir.
Open: Dosyayı açmak için kullanılır.
OpenOrCreate: Belirtilen dosya varsa açılır yok ise yenisi oluşturulur.
Truncate: Belirtilen dosya tamamen açılır ve içi tamamen silinir.
FileAccess Numaralandırılması:
Read: Dosya okumak için açılır.
ReadWrite: Dosya okumak ve yazmak için açılır.
Write: Dosya sadece yazmak için açılır.
FileShare Numaralandırılması:
Inheritable: Dosyanın child prosesler tarafından türetilebilmesini sağlar.
None: Dosyanın başka prosesler tarafından türetilmesini sağlar.
Read: Dosyanın başka proseslerce de açılabilmesini sağlar.
ReadWrite: Dosyanın başka procseslerce de açılıp okunabilmesini ve üzerine yazılabilmesini sağlar.
Write: Dosyaya başka procseslerin de yazılabilmesini sağlar.
File.OpenRead(string yol);
Belirtilen dosyayı yalnız okumak için açar ve ilgili dosyaya ilişkin FileStream nesnesini döndürür.
File.OpenText(string yol);
Belirtilen dosyayı yanlızca text modunda okumak için açar ve ilgili dosyaya ilişkin StreamReader nesnesini döndürür.
File.OpenWrite(string yol);
Belirtilen dosyayı yazma modunda açar ve ilgili dosyaya ilişkin FileStream nesnesini döndürür.
Örnek: C: sürücüsünde "deneme.txt" adlı bir dosya oluşturmak için.
string yol = @"C:\deneme.txt";
File.Create(yol);