Makale Özeti

.NET ile dosya erişimine giriş yapıyoruz.

Makale


C# ile Dosya işlemleri (I/O) -1-
.NET Framework içinde dosya işlemlerinizi yapabilmeniz için sınıflar tanımlanmıştır. Bunlar dosya işlemlerinde iki türlü yöntem sunarlar (buffered, unbuffered streams). Veriyi bir dosyadan nasıl alabileceğimiz konularına girmeden önce biraz dizinlerle çalışalım.
Directory sınıfı bir klasör açmanızı, yeni bir tane oluşturmanızı ve taşımanızı sağlayacak yöntemler içerir. DirectoryInfo sınıfı bir dosya veya klasör hakkında birçok bilgiyi alabileceğiniz özellikler sunar. Bu sınıflara ait temel metotlar;

Directory Sınıfı
(hepsi static üye)


DirectoryInfo Sınıfı
(Methodlar ve properties)

CreateDirectory()

Attributes

Delete()

FullName

Exist()

LastAccesTime

GetCreationTime()
SetCreationTime()

Create()

GetCurrentDirectory()
SetCurrentDirectory()

CreateSubDirectory()

GetDirectories()

Delete()

GetDirectoryRoot()

GetDirectories()

GetFiles()

GetFiles()

GetLastAccessTime()
SetLastAccessTime()

MoveTo()

GetLastWriteTime()
SetLastWriteTime()

Refresh()

GetLogicalDrives()

Parent

GetParetnt()

Name

Move() …

Extension …

Biraz uygulamaya ne dersiniz…

Yukarıdaki gibi bir form oluşturalım ve programımız textboxa yazdığımız klasörün içerdiği alt dizinleri combobox’a listelesin. Listele butonuna aşağıdaki kodu yazmamız yeterli. Burada ‘directory’ textboxun, liste combobox’ın name’i
DirectoryInfo dir;
DirectoryInfo[] klasorler;
private void listele_Click(object sender, System.EventArgs e)
{
 dir = new DirectoryInfo(directory.Text);
 klasorler = dir.GetDirectories();
 liste.Items.Clear();
 foreach(DirectoryInfo newDir in klasorler)
 {
 liste.Items.Add(newDir.Name);
 }

Dosyalarla Çalışmak
Bir DirectoryInfo nesnesi bir dizindeki tüm dosyaların listesini verebilir (GetFiles()). File ve FileInfo nesneleri de Directory ve DirectoryInfo nesneleri gibidir. Aşağıdaki liste bu sınıfın önemli üyelerini gösterir.

File Sınıfı
(hepsi static üye)


FileInfo Sınıfı
(Methodlar ve properties)

AppendText()

Attributes()

Copy()

CreationTime

Create()

Directory

Delete()

Exists

Exists()

Extensions

GetAttributes()
SetAttributes()

FullName

GetCreationTime()
SetCreationTime()

LastAccessTime

GetLastAccessTime()
SetLastAccessTime()

Length

GetLastWriteTime()
SetLastWriteTime()

Name

Move()

AppendText()

OpenRead()

CopyTo()

OpenWrite()

Create()

Move() …

Delete()
 
MoveTo()
 
Open()
 
OpenRead()
 
OpenText()
 
OpenWrite()

Bu özellikleri kullanmak yukarıdaki örnekten pek farklı değil. Önce bir deneme dizini oluşturun ardından windows altındaki media dizinini bu dizine kopyalayın. Program kısaca;
string dizin=@”c:\test\media”;
DirectoryInfo dizin=new DirectoryInfo(dizin);
Sıra, yeni bir dizin oluşturup deneme\media altındaki dosyaları kopyalamaya geldi.
string yeniDizin=”yenideneme”;
DirectoryInfo yeniAltDizin = dizin.CreateSubDirectory(yeniDizin);
Şimdi media dizini içindeki tüm dosyaları yenideneme dizini içine kopyalamaya geldi.
FileInfo[] dizindekiDosyalar = dizin.GetFiles();
foreach(FileInfo dosya in dizindekiDosyalar)
{
string yol=yeniDizin.FullName+”\\”+dosya.Name;
dosya.copyTo(yol);
}
//programın sonu…
Ayrıca bu nesneleri
dosya.MoveTo(yol); dosya.Delete(); yeniDizin.Delete();
şeklindede kullanabilirdik.
Dosyaları veri okumak veya yazmak için nasıl kullanabiliriz?
Okumak ve Yazmak
Bir dosyadan veri okumak yada dosyaya veri yazmak Stream sınıfı ile yapılabilir. Stream senkron veya asenkron okuma ve yazma işlemlerini destekler. .NET Framework Stream sınıfından türetilmiş FileStream, MemoryStream ve NetworkStream sınıfları ile bize çeşitli imkanlar sunar. Sırası ile bunların neler olduğunu inceleyelim.

SINIF


Stream

BinaryReader
BinaryWriter

File, FileInfo,
Directory,DirectoryInfo

FileStream

TextReader, TextWriter
StringReader, StringWriter

BufferedStream

NetwoekStream

MemoryStream

Okuma ve yazma işlemi oldukça geniş bir konu olduğundan bir sonraki yazıda detaylı olarak inceleyeceğiz. Bu makalede kısaca dosya ve dizinler üzerinde neler yapabileceğimizi -giriş seviyesinde- gördük. Binary dosyalarla çalışmak, Buffered stream, text dosyalarından okuma-yazma, ve dosyalarla asenkron çalışma (Asenkron I/O) konularında görüşmek dileğiyle.
Referanslar:
Programming C#;
Introduction to C#;