📚 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