Merhaba,
Bu yazı dizimizde temel giriş çıkış işlemlerinin beşinci kısımını inceleyeceğiz ve bu yazı bunlardan yedincisi olan FileStream sınıfı ile ilgili temel bilgiler ve detayları içeriyor olacak.
Yazı dizimizin girişinde diğerlerinde de olduğu gibi öncelikle IO sınıfı hakkında bilgimizi ekleyelim:
Programlama dilleri içerisinde yer alan önemli yapılardan biri olan I\O sistemi bilgisayarların çeşitli kaynaklarına erişmek için kullanılacak yollar anlamına gelir. Dosya kaydetme, ekrana yada yazıcıya bilgi yazdırma, klavyeden bilgi girişleri birer I\O işlemleridir.
-C# dilinde ise I\O sistemi ile ilgili tüm sınıflar “System.IO” isim alanı altında bulunmaktadır.
-C# dilinde de I\O sistemi akışlar(stream) üzerine kuruludur. Akışlar bir girdi ya da çıktı sistemi üzerinden byte düzeyinde bilgiyi okuya sanal birimlerdir.
-Stream sınıfı akışlar için gerekli temel metot ve özellikleri barındırır.
FileStream Sınıfı
FileStream sınıfı ile diskteki bir dosya açılır. StreamReader ve StreamWriter sınıfları ile üzerinde işlem yapılabilir. Dosyalar üzerinde metin tabanlı ve bayt tabanlı işlemler yapabiliriz. Bir FileStream nesnesi çok değişik yollar ile oluşturulabilir.
string yol = @"C:\Program Files\deneme.txt"; FileStream FS1= new FileStream(yol,FileMode.OpenOrCreate); // FileStream FS2= new FileStream(yol,FileMode.OpenOrCreate,FileAccess.Write); // FileStream FS3= new FileStream(yol,FileMode.OpenOrCreate,FileAccess.Write,FileShare.None); // FileInfo FI = new FileInfo(yol); FileStream FS4= FI.OpenRead(); // FileInfo FI2 = new FileInfo(yol); FileStream FS5 = FI2.OpenWrite(); // FileInfo FI3 = new FileInfo(yol); FileStream FS6= FI3.Create(); // FileInfo FI4= new FileInfo(yol) FileStream FS7= FI4.Open(FileMode.OpenOrCreate);
Dosya ile ilgili işlem bittiğinde FileStream sınıfının Close() metodu ile FileStream nesnesi tarafından tutulan kayaklar boşaltılır ve dosyayı başka proseslere kullanabilir hale getirir.
-Read() ve ReadByte() Metotları
FileStream sınıfının Read() ve ReadByte() metotları dosya akışından byte düzeyinde veri okumamızı sağlar. ReadByte() metodu akıştan okuma yapamadığı zaman geriye -1 değerini döndürür.
-WriteByte(byte veri) Metodu
Bir dosya akışına bir byte yazmak için bu metot kullanılır. Eğer yazma işlemi başarısız olursa çalışma zamanı hatası oluşur.
-WriteByte(byte[] dizi, int baslangic, int adet) Metodu
Dosya akışına bir bayt dizisi yazdırmak için kullanılan metottur. Bu metot ile byte dizisinin baslangic isimli indisinden itibaren adet değişkeni kadar elean akışa yazılır. Akışın konum göstericisi yazıla byte kadar ötelenir.
-Flush() Metodu
Dosya akışına yazılan veriler dosya sistemindeki dosyaya hemen aktarılmaz. Dosya akışı tamponlama mekanizması ile çalıştığı için belirli bir miktarı veri yazılana kadar dosya güncellenmez. Ancak FileStream sınıfının Flush() metodunu kullanarak istediğimiz ada tamponu boşaltıp dosyayı tampondaki bilgilerle güncelleyebiliriz.
FileStream sınıfına dahil olan diğer önemli özellikler ise:
•bool CanRead : Akıştan okuma yapılıp yapılamayacağını öğrenir.
•bool CanSeek : Akışta konumlandırma yapılıp yapılamayacağını öğrenir.
•bool CanWrite : Akışta yazma işlemi yapılıp yapılamayacağını öğrenir.
•long Position : Akıştaki aktif konum bilgisi öğrenilir.
•long Length : Akışın bayt olarak byüklüğü öğrenilir.
•Lock(long pozisyon, long uzunluk) : Bu metot ile akışın pozisyon değişkeninden itibaren uzunluk kadar alanı başka proseslerin erişimine kapatır.
•long Seek(long efset, SeekOrigin a) : Bu metot ile akışın konumu SeekOrigin ile belirtilmiş olan konumdan ofset byte kadar ötelenir.
Bu yazımızın içeriğinde de FileStream ile ilgili işlemlerle bilgi vermiş olduk. Bu dizimizin bir sonraki yazısında görüşmek üzere. Aklınıza takılan veya eksik gördüğünüz kısımları bana yorumlar aracılığı ile bildirebilirsiniz.
Teşekkürler!