C#'da Akış: StreamReader ve StreamWriter [Örnek]
⚡ Akıllı Özet
AC# akışı, uygulamanız ve dosya arasında veriyi küçük parçalar halinde okumanıza veya yazmanıza olanak tanıyan bir katmandır. Burada StreamReader ve Stream'in nasıl çalıştığını öğreneceksiniz.Writer Örneklerle ve ana akım türleriyle birlikte çalışma.
C# Akışı nedir?
C# dosya işlemlerinde normalde akışlar dosyaları okumak ve yazmak için kullanılır. Akış, uygulama ile dosya arasında oluşturulan ek bir katmandır. Akış, dosyaya okuma ve yazma işlemlerinin düzgün yapılmasını sağlamak için kullanılır.
Akışlar normalde büyük dosyalardan veri okunurken kullanılır. Akışlar kullanılarak büyük dosyalardaki veriler küçük parçalara bölünür ve akışa gönderilir. Bu veri parçaları daha sonra uygulamadan okunabilir.
Küçük parçalara ayırmanın nedeni, büyük bir dosyayı tek seferde okumanın performans etkisidir. Örneğin 100 MB'lık bir dosyadaki verileri tek seferde okursanız, uygulamanız kilitlenebilir ve kararsız hale gelebilir. Bu durumda en iyi yaklaşım, dosyayı yönetilebilir parçalara ayırmak için akışları kullanmaktır.
Yani dosya üzerinde yazma işlemi gerçekleştirildiğinde öncelikle yazılacak veri akışa yazılır. Akıştan veriler daha sonra dosyaya yazılır. Aynı durum okuma işlemi için de geçerlidir. Okuma işleminde veriler öncelikle dosyadan akışa aktarılır. Veriler daha sonra uygulamadan akış yoluyla okunur. Akışları kullanarak nasıl okuyup yazabileceğimize dair bir örneğe bakalım.
C#'da Akış Türleri
C#'daki tüm akış sınıfları abs sınıfından türetilmiştir.tract Stream sınıfında System.IO Her tür farklı bir veri kaynağını hedef alır ancak aynı okuma ve yazma yöntemlerini paylaşır. En sık kullanılan akışlar aşağıda listelenmiştir.
- Dosya akışı Disk üzerindeki dosyalardan tek tek bayt veya bloklar halinde okuma ve yazma işlemleri yapar.
- Bellek Akışı Verileri dosya yerine bellekte saklar, bu da geçici tamponlar için kullanışlıdır.
- BufferedStream Yavaş disk veya ağ işlemlerinin sayısını azaltmak için başka bir akışı sarmalar.
- Ağ Akışı Ağ soketi üzerinden veri gönderir ve alır.
C# metinlerle çalışmak için şu özellikleri sunar: StreamReader hem de StreamWriter Akışları saran ve sonraki bölümlerde ele alınacak olan yardımcı sınıflar.
Akış Okuyucusu
Akış okuyucusu, akışları kullanarak bir dosyadaki verileri okumak için kullanılır. Dosyadaki veriler ilk önce akışa okunur. Daha sonra uygulama akıştan verileri okur.
Örneğimiz için D sürücüsünde Örnek.txt adında bir dosyamızın olduğunu varsayacağız. Dosya basit bir metin dosyası olacak ve aşağıda gösterildiği gibi 2 satırdan oluşacaktır.
- Guru99 – .Net
- Guru99 -C#
Örneğimiz için basit bir Konsol uygulaması oluşturup Dosya akışlarıyla çalışacağız
Bir dosyadan veri okumak için akışları nasıl kullanabileceğimize dair bir örneğe bakalım. Program.cs dosyasına aşağıdaki kodu 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(); } } }
Code Açıklama:-
- Öncelikle bir akış okuyucu nesnesi bildiriyoruz. Akış okuyucu nesnesi, C#'ta dosyadan uygulamaya bir akışı tanımlamak için kullanılır. Dosyadan veri okunduğunda veriler dosyadan akışa aktarılacaktır. Dosya.OpenText “Örnek.txt” dosyasını salt okunur modda açmak için kullanılır. Dosyanın işleyicisi daha sonra akış okuyucu nesnesine gönderilir.
- Daha sonra, dosyadaki tüm verileri okumak için kullanılacak geçici bir 's' değişkenini tanımlıyoruz.
- Daha sonra akış okuyucu yöntemi ReadLine'ı kullanarak akış tamponundaki her satırı okuruz. Bunu gerçekleştirdiğimizde operasyon, her satır önce dosyadan tampona aktarılacak. Sonra dize satırı tampondan 's' değişkenine aktarılacak. Daha sonra 's' dizesinin içeriğini konsola yazacağız.
Yukarıdaki kod ayarlandığında ve proje kullanılarak çalıştırıldığında Visual Studio, aşağıdaki çıktıyı alacaksınız.
Çıktı:-
Çıktıdan, Stream Reader'ın dosyadaki her iki satırı da okuduğunu görebilirsiniz. Son olarak akıştan okunan stringin satırları Konsola gönderildi.
dere Writer
Akış yazıcısı, akışları kullanarak bir dosyaya veri yazmak için kullanılır. Uygulamadan gelen veriler ilk ö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. Program.cs dosyasına aşağıdaki kodu 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(); } } }
Code Açıklama:-
- Öncelikle bir akış yazıcısı nesnesi bildiriyoruz. Akış yazıcı nesnesi C#'ta bir akışı tanımlamak için 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ısı nesnesine gönderilir.
- "Yazma işlemi için Writeline akış yazma yöntemini kullanıyoruz ve şu satırı yazıyoruz:Guru"99 – ASP.Net" ifadesini akışa gönderir. Akıştan alınan satır daha sonra dosyaya yazılır.
- Daha sonra dosyaya yazdıktan sonra akış yazıcısını kapatıyoruz. Dosya artık yazma amaçları için gerekli olmadığında dosya işleyicilerini kapatmak normalde iyi bir uygulamadır.
- Son olarak dosyanın içeriğini tekrar okuyup konsol log’una 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ı alacaksınız.
Çıktı:-
Çıktıdan da görebileceğiniz gibi, şu satır:Guru"99 – ASP.Net" dosyaya başarıyla eklendi. Konsolda 3 satır metnin tamamı görülebiliyor.





