Dosya Okuma Yazma Islemleri
Bu yazimda dosya islemlerinden text dosyasi yazma ve okuma islemleri üzerimde duracagim. C#’ta dosya islemleri için System.IO kütüphanesi kullanilir. Bunun için öncelikle projemize bu kütüphaneyi ekliyoruz.
using System.IO;
Daha sonra formumuzu sekillendirelim. Toolbox’tan formumuza 5 button, 1 richTextBox ve 1 TextBox sürükleyip birakalim. Asagidaki gibi dizayn edelim.
Simdi butonlarin üzerinde yazan islemlerin nasil yapildigindan bahsedelim. Öncelikle butonlarin click event’lerini olusturalim.
Yazma islemi için StreamWriter sinifi kullanilir. Bunun için önce bu siniftan bir nesne olusturacagiz. StreamWriternesnesi tanimlanken string tipinde bir parametre girmemiz gerekiyor. Bu parametre üzerinde islem yapacagimiz dosyanin adresinden ve isminden olusan bir path’tir. Verilen adreste path içinde adi geçen dosya olmayabilir. Bu durumda program önce dosyayi olusturacak sonra üzerinde islem yapacaktir.
Bu programda StreamWriter sinifin yazma prosedürlerinden WriteLine prosedürünü kullanacagiz. WriteLine string tipinde bir parametreyle çalisir ve bu parametreyi dosya içinde tek bir satira yazar. Son olarak bu dosyaya ekledigimiz veriye ulasabilmek için olusturdugumuz nesneyi kapatiriz.
Okuma islemi için StreamReader sinifi kullanilir. Bunun için önce bu siniftan bir nesne olusturacagiz. StreamReadernesnesi tanimlarken string tipinde bir parametre girmemiz gerekiyor. Bu parametre üzerinde islem yapacagimiz dosyanin adresinden ve isminden olusan bir path’tir. Verilen adreste path içinde adi geçen dosya olmak zorundadir.
Bu programda StreamReader sinifin okuma prosedürlerinden ReadLine prosedürünü kullanacagiz. ReadLine, dosyayi satir satir okumak için kullanilir. Parametre istemez.
Islemi sonlandirmak için nesneyi kapatiriz.
Ekleme islemi, yazma islemine benzemektedir. Bu islem için de StreamWriter sinifini kullanilir. Aralarindaki fark tanimlamada ve uygulamada ortaya çikar. Ekleme islemini tanimlarken File.AppendText kullanilir. AppendText string tipinde bir parametre ister. Bu parametre ekleme islemi yapilacak dosyanin adresinden ve isminden olusan bir path’tir. Uygulama olarak yazma isleminden farki, dosya içinde daha önceden var olan verileri koruyarak dosyaya yeni veriler eklemesidir. Bu islemde de verilen adreste path içinde adi geçen dosya olmayabilir. Bu durumda program önce dosyayi olusturacak sonra üzerinde islem yapacaktir.
Dosyadaki tüm verileri okumak için yine StreamReader sinifi kullanilir. Burada okuma isleminden farkli olarak bir döngü kullanacagiz.
Programda okunan verileri görebilmek için richTextBox kullandik. Ilk olarak richTextBox’daki eski verileri temizledik. Verileri richTextBox’a yazarken string toplamasi yaptik. ”\n” islemi ile yeni gelen verinin bir alt satirda görünmesini sagladik.
Son butonun click event’inde richTextBox’taki tüm verilerin temizlenmesi için Clear procedürünü kullandik.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace Dosya_Okuma_Yazma
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//Yazma Islemi
private void button1_Click(object sender, EventArgs e)
{
StreamWriter SW = new StreamWriter("c:\\deneme.txt");
SW.WriteLine(textBox1.Text);
SW.Close();
}
//Okuma Islemi
private void button2_Click(object sender, EventArgs e)
{
StreamReader SR = new StreamReader("c:\\deneme.txt");
richTextBox1.Text = SR.ReadLine();
SR.Close();
}
//Ekleme Islemi
private void button3_Click(object sender, EventArgs e)
{
StreamWriter SW = File.AppendText("c:\\deneme.txt");
SW.WriteLine(textBox1.Text);
SW.Close();
}
//Dosyadaki Tüm Verileri Okuma
private void button4_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
StreamReader SR = new StreamReader("c:\\deneme.txt");
string metin = SR.ReadLine();
while (metin!=null)
{
richTextBox1.Text = richTextBox1.Text + "\n" + metin;
metin = SR.ReadLine();
}
}
//richTextBox’i Temizleme
private void button5_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
}
}
}