C # dosya işlemlerinde, normalde akışlar dosyaları okumak ve yazmak için kullanılır. Akış, bir uygulama ile dosya arasında oluşturulan ek bir katmandır. Akış, dosyaya sorunsuz okuma ve yazma işlemleri sağlamak için kullanılır.
Akışlar normalde büyük dosyalardan veri okurken kullanılır. Akışları kullanarak, büyük dosyalardaki veriler küçük parçalara bölünür ve akışa gönderilir. Bu veri yığınları daha sonra uygulamadan okunabilir.
Küçük parçalara bölmenin nedeni, büyük bir dosyayı tek seferde okumanın performans etkisidir. Verileri tek seferde 100 MB'lık bir dosyadan okursanız, uygulamanız askıda kalabilir ve kararsız hale gelebilir. Daha sonra en iyi yaklaşım, dosyayı yönetilebilir parçalara ayırmak için akışları kullanmaktır.
Böylece dosya üzerinde bir yazma işlemi yapıldığında, yazılacak veriler önce akışa yazılır. Akıştan veriler daha sonra dosyaya yazılır. Aynısı okuma işlemi için de geçerlidir. Okuma işleminde, veriler önce dosyadan akışa aktarılır. Veriler daha sonra akış aracılığıyla uygulamadan okunur. Akışları kullanarak nasıl okuyup yazabileceğimize dair bir örneğe bakalım.
Bu eğitimde öğreneceksiniz-
- Akış Okuyucu
- Akış Yazarı
Akış Okuyucu
Akış okuyucu, akışları kullanarak bir dosyadan veri okumak için kullanılır. Dosyadaki veriler önce akışa okunur. Daha sonra uygulama, verileri akıştan okur.
Örneğimiz için, D sürücüsünde Example.txt adında bir dosyamız olduğunu varsayacağız. Dosya basit bir metin dosyası olacak ve aşağıda gösterildiği gibi 2 satıra sahip olacaktır.
- Guru99 - .Net
- Guru99 -C #
Örneğimiz için, basit bir Konsol uygulaması oluşturacağız ve Dosya akışları ile çalışacağız.
Bir dosyadan veri okumak için akışları nasıl kullanabileceğimize dair bir örneğe bakalım. Aşağıdaki kodu program.cs dosyasına girin.
using System;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{class Tutorial{static void Main(string[] args){String path = @"D:\Example.txt";using (StreamReader sr = File.OpenText(path)){String s = "";while ((s = sr.ReadLine()) != null){Console.WriteLine(s);}}Console.ReadKey();}}}
Kod Açıklaması: -
- İlk olarak, bir akım okuyucu nesnesi bildiriyoruz. Akış okuyucu nesnesi, dosyadan uygulamaya bir akış tanımlamak için C # 'da kullanılır. Veriler, dosyadan her okunduğunda, dosyadan akışa aktarılacaktır. File.OpenText, salt okunur modda "Example.txt" dosyasını açmak için kullanılır. İşleyici dosyaya daha sonra akış okuyucu nesnesine gönderilir.
- Ardından, dosyadaki tüm verileri okumak için kullanılacak geçici bir değişken 's' tanımlıyoruz.
- Daha sonra akış tamponundan her satırı okumak için akım okuyucu yöntemini ReadLine kullanırız. Bu işlemi yaptığımızda her satır önce dosyadan tampona aktarılacaktır. Daha sonra dize satırı tampondan 's' değişkenine aktarılacaktır. Daha sonra 's' dizesinin içeriğini konsola yazıyoruz.
Yukarıdaki kod ayarlandığında ve proje Visual Studio kullanılarak çalıştırıldığında aşağıdaki çıktıyı alırsınız.
Çıktı:-
Çıktıdan, Akış Okuyucunun dosyadaki her iki satırı da okuduğunu görebilirsiniz. Son olarak, akıştan okunan dizenin satırları Konsola gönderildi.
Akış Yazarı
Akış yazıcısı, akışları kullanarak bir dosyaya veri yazmak için kullanılır. Uygulamadan gelen veriler önce akışa yazılır. Bundan sonra akış verileri dosyaya yazar. Bir dosyadan veri yazmak için akışları nasıl kullanabileceğimize dair bir örneğe bakalım. Aşağıdaki kodu program.cs dosyasına girin.
using System;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{class Tutorial{static void Main(string[] args){String path = @"D:\Example.txt";using (StreamWriter sr = File.AppendText(path)){sr.WriteLine("Guru99 - ASP.Net");sr.Close();Console.WriteLine(File.ReadAllText(path));}Console.ReadKey();}}}
Kod Açıklaması: -
- İlk olarak, bir akım yazıcı nesnesi bildiriyoruz. Akış yazıcı nesnesi, bir akışı tanımlamak için C # 'da kullanılır. Akış daha sonra uygulamadan dosyaya veri yazmak için kullanılır. Verilerin yazılması gerektiğinde, veriler uygulamadan akışa aktarılacaktır. File.AppendText komutu, "Example.txt" dosyasını ekleme modunda açmak için kullanılır. Dosyanın işleyicisi daha sonra akış yazıcı nesnesine gönderilir.
- Akışa "Guru99 - ASP.Net" satırını yazmak için akış yazma yöntemi Writeline'i kullanıyoruz. Akıştan satır daha sonra dosyaya yazılacaktır.
- Dosyaya yazdıktan sonra akış yazarını kapatıyoruz. Dosya artık yazma amacıyla gerekmediğinde dosya işleyicilerini kapatmak normalde iyi bir uygulamadır.
- Son olarak dosyanın içeriğini tekrar okuyup konsol günlüğüne yazıyoruz. Bu, satırın dosyaya yazılıp yazılmadığını kontrol etmek içindir.
Yukarıdaki kod ayarlandığında ve proje Visual Studio kullanılarak çalıştırıldığında aşağıdaki çıktıyı alırsınız.
Çıktı:-
Çıktıdan "Guru99 - ASP.Net" satırının dosyaya başarıyla eklendiğini görebilirsiniz. 3 satırlık metnin tamamı konsolda görülebilir.
Özet
- Akışlar, uygulama ile dosya arasında bir ara düzey olarak kullanılır.
- Bir dosyadan verilerin okunması gerektiğinde bir StreamReader kullanılır.
- Verilerin bir dosyaya yazılması gerektiğinde bir Streamwriter kullanılır.