13.4 – Dosya Okuma-Yazma Senaryoları


📚 13.4 – Dosya Okuma-Yazma Senaryoları


🎯 

Amaç:

Gerçek dünyaya uygun mini uygulama senaryolarıyla öğrencilere dosya okuma ve yazma işlemlerinin içselleştirilmesi.

Bu bölümde:

  • Kullanıcıdan alınan verilerin dosyaya kaydı
  • Kayıtların geri okunarak gösterilmesi
  • Listeleme, silme, günlük tutma gibi senaryolar
  • Basit loglama mantığı
  • Dosya bulunamama durumlarında kullanıcıya doğru rehberlik

hepsi bir arada uygulanacak.


🧪 

Senaryo 1: Günlük Uygulaması

Kullanıcı bir metin yazar ve her yazdığında tarihli bir günlük satırı eklenir.

private void btnGunlukEkle_Click(object sender, EventArgs e)
{
    string satir = $"{DateTime.Now}: {txtGunluk.Text}";

    using (StreamWriter sw = new StreamWriter("gunluk.txt", true))
    {
        sw.WriteLine(satir);
    }

    txtGunluk.Clear();
    MessageBox.Show("Günlük kaydı yapıldı.");
}

🧪 

Senaryo 2: Basit Öğrenci Kayıt Sistemi

Öğrenci adı ve numarası dosyaya kaydedilir, ListBox ile gösterilir.

private void btnKaydet_Click(object sender, EventArgs e)
{
    string veri = $"{txtAd.Text},{txtNumara.Text}";

    using (StreamWriter sw = new StreamWriter("ogrenciler.txt", true))
    {
        sw.WriteLine(veri);
    }
}

private void btnListele_Click(object sender, EventArgs e)
{
    lstOgrenciler.Items.Clear();
    using (StreamReader sr = new StreamReader("ogrenciler.txt"))
    {
        string satir;
        while ((satir = sr.ReadLine()) != null)
        {
            lstOgrenciler.Items.Add(satir);
        }
    }
}

🧪 

Senaryo 3: Log Dosyası Oluşturma ve Takip

Her başarılı işlem ya da hata mesajı bir log dosyasına yazılır.

public void LogYaz(string mesaj)
{
    string log = $"{DateTime.Now} - {mesaj}";
    using (StreamWriter sw = new StreamWriter("log.txt", true))
    {
        sw.WriteLine(log);
    }
}

Örnek kullanım:

try
{
    // işlem
    LogYaz("Kayıt işlemi başarılı.");
}
catch (Exception ex)
{
    LogYaz("HATA: " + ex.Message);
}

🧪 

Senaryo 4: Kayıtları Tarihe Göre Filtreleme

Kullanıcı belirli bir tarihteki kayıtları görmek istiyor.

private void btnFiltrele_Click(object sender, EventArgs e)
{
    lstSonuclar.Items.Clear();
    string filtre = dtpTarih.Value.ToShortDateString();

    using (StreamReader sr = new StreamReader("gunluk.txt"))
    {
        string satir;
        while ((satir = sr.ReadLine()) != null)
        {
            if (satir.Contains(filtre))
                lstSonuclar.Items.Add(satir);
        }
    }
}

🧪 

Senaryo 5: Dosya Yoksa Oluşturup Uyarı Gösterme

private void btnKontrolEt_Click(object sender, EventArgs e)
{
    if (!File.Exists("veri.txt"))
    {
        File.Create("veri.txt").Close();
        MessageBox.Show("veri.txt oluşturuldu.");
    }
    else
    {
        MessageBox.Show("veri.txt zaten mevcut.");
    }
}

🧠 

Bölüm Özeti:

Bu senaryolarla öğrenci:

  • Dosya işlemlerini salt teoriden çıkarıp somutlaştırır
  • Gerçek uygulamalara daha hazır hale gelir
  • Kullanıcıyı yönlendirme, veri güvenliği gibi pratik yetkinlikler kazanır
  • İleriye dönük projelerde log, yedekleme, veri saklama alışkanlığı edinir

Leave a Reply