C#

C# Dosyaya Veri Ekleme

Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde dosyaya veri ekleme işlemlerini anlatacağım. Hazırsak başlayalım !

Öncelikle dosya.txt isminde masaüstünde bir tane metin belgesi oluşturalım, tüm işlemleri bu dosya üzerinden yürüteceğiz. Dosyamızın yolu ise c:/users/kullanici/desktop/dosya.txt olsun ve bu yolu da bir değişkene atayalım. Yani

string dosya = c:/users/kullanici/desktop/dosya.txt

Dosyaya veri eklemenin iki yolu var. Birincisi eğer dosyanın başka bir işlem tarafından kullanılmadığından eminseniz File classının static olan AppendText() yada AppendLine() metodlarını kullanabiliriz. Her iki fonksiyonda ilki dosya yolu, ikincisi eklenecek veri olmak üzere iki farklı parametre alıyor. E aldıkları parametreler bile aynı ise aralarında ne fark var dediğinizi duyar gibiyim. Aralarındaki fark şu; AppendText() ile veri ekleme işleminde imlec kaldığı yerden devam eder, yani veri eklemesinde alt satıra geçmez. AppendLine() fonksiyonu ise her veri eklemesinde bir alt satıra geçer. Tabi iki fonksiyonda tek satırlık ekleme yapar, e tek seferde birden fazla satır yazamaz mıyım derseniz cevap evet, yazabilirsiniz. Bunun içinde AppendAllText() yada AppendAllLines() metodlarını kullanabiliriz. Her iki metodda parametre olarak dizi alır ve AppendAllText() metodu AppendText() metodunun, AppendAllLines() metodu ise AppendLine() metodunun çoğul halidir. Yani örneğin AppendAllLines() metodu arka planda dışarıdan aldığı diziyi döngü ile dönüp her adımda AppendLine() metodunu çağırır. AppendAllLines() için şöyle diyebiliriz yani;

foreach(var item in dizi)
    File.AppendLine(item);

Şimdi bu dediğimiz her fonksiyon için birer örnek verelim;

File.AppendText(dosya, "Alt satıra geçmeden veri ekleme örneği");
File.AppendLine(dosya, "Alt satıra geçerek veri ekleme örneği");
File.AppendAllText(dosya, new string[]{ "örnek 1", "örnek 2", "örnek 3" });
File.AppendAllLines(dosya, new int[]{ 1, 2, 3 });

Dosyaya veri eklemenin iki yolu var dedik ve ilkini anlattık (bahsettiğim 4 fonksiyonda ilk yöntem içindi) ve şimdi geldik ikinci yola.

Eğer dosyanın farklı bir işlem tarafından kullanıldığından emin değilsek, başka bir işlem bizim dosyamızı kullanabilecekse o zaman Stream adı verilen yapıyı kullanmamız gerek. Tabi biz dosya işlemi yapacağımız için FileStream kullanmalıyız. FileStream static olmayan bir class olduğu için yeni bir nesnesini türetmemiz gerek. FileStream, dosya yolu, dosyayı açma türü ve açma yöntemi olmak üzere 3 parametre alıyor (aslında birden fazla overload özelliği var ama biz sadece bahsettiğim şekilde kullanacağız). Önce FileStream türünde bi obje oluşturalım.

FileStream fs = new FileStream(dosya, FileAccess.Append, FileMode.Open);

Yazdığımız kod parçasına baktığımızda dosyayı append yani ekleme yöntemiyle açtık. E dosyayı açtık ama nasıl ekleme yapacağız derseniz onun için de StreamWriter adında bi yapı kullanmamız gerek ve tıpkı FileStream gibi bunun da yeni bir nesnesini türetmemiz gerek. StreamWriter classı da parametre olarak zaten FileStream nesnesi istiyor, ki zaten biz onu hallettik. Bunun da şöyle bir kodu olacaktır;

StreamWriter writer = new StreamWriter(fs);

Yazıcımızı da hallettik ve artık sırada dosyaya veri eklemede. Onu da StreamWriter ile yapacağız. Şöyle ki;

writer.Write("StreamWriter ile dosyaya veri ekleme örneği");

Evet dosyaya veri eklemesi de yaptık ve işimiz bitince artık yazıcımızı kapatıp dosyayı serbest bırakalım ki farklı işlemlerde dosyayı kullanabilsin ve bellek serbest kalsın. Oda şöyle;

writer.Close();
fs.Close();

Farkettiyseniz hem StreamWriter hemde FileStream’i kapattık, çünkü biri yazıcı, diğeri dosyayı açıyor. Yani her ikisinin de dosyaya erişimi var ve kapatılması gerek.

Bu dersimizde bu kadardı, diğer C# ile dosya işlemleri derslerimize ulaşmak için buraya, Tüm C# derslerimize ulaşmak için ise buraya tıklayabilirsiniz. Herkese hayırlı günler.

Skorumuz:
Oy Vermek İçin Tıklayın
[Toplam: 0 Ortalama: 0]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu