13. Dosya İşlemleri (File I/O) – Temel Seviye

C# Logo
C# Logo
image text

13. Dosya İşlemleri (File I/O) – Temel Seviye

C# programlama dilinde dosya işlemleri (File I/O), uygulamalarımızın kalıcı veri saklaması ve dış kaynaklardan veri alması için hayati öneme sahiptir. Bu makalede, C# ile temel dosya okuma ve yazma işlemlerini detaylı bir şekilde inceleyeceğiz. Dosya oluşturma, okuma, yazma, silme gibi temel operasyonları örnek kodlarla açıklayacağız.

Dosya İşlemlerine Giriş

Dosya işlemleri, bir programın disk üzerindeki dosyalarla etkileşim kurmasını sağlar. Bu etkileşim, veri saklama, yapılandırma dosyalarını okuma, loglama gibi birçok farklı amaç için kullanılabilir. C#’ta System.IO namespace’i, dosya işlemlerini gerçekleştirmek için gerekli olan sınıfları ve metotları içerir.

System.IO Namespace’i

System.IO namespace’i, dosya ve dizinlerle çalışmak için gereken temel sınıfları sağlar. Başlıca sınıflar şunlardır:

  • File: Dosyalar üzerinde işlem yapmak için statik metotlar içerir (oluşturma, silme, kopyalama, vb.).
  • Directory: Dizinler üzerinde işlem yapmak için statik metotlar içerir (oluşturma, silme, taşıma, vb.).
  • FileInfo: Bir dosyayı temsil eder ve dosya özelliklerine erişim sağlar (boyut, oluşturulma tarihi, vb.).
  • DirectoryInfo: Bir dizini temsil eder ve dizin özelliklerine erişim sağlar.
  • Stream: Veri akışlarını temsil eder (dosyadan okuma, dosyaya yazma, vb.).
  • StreamReader: Bir dosyadan metin okumak için kullanılır.
  • StreamWriter: Bir dosyaya metin yazmak için kullanılır.

Dosya Oluşturma ve Silme

C#’ta dosya oluşturmak ve silmek için File sınıfının statik metotları kullanılır.

Dosya Oluşturma

Yeni bir dosya oluşturmak için File.Create() metodu kullanılır. Bu metot, belirtilen yolda yeni bir dosya oluşturur ve bir FileStream nesnesi döndürür. Bu nesne, dosyaya veri yazmak için kullanılabilir.

C#
using System;
using System.IO;

public class DosyaIslemleri
{
 public static void Main(string[] args)
 {
   string dosyaYolu = "ornek.txt";
  
   try
   {
     using (FileStream fs = File.Create(dosyaYolu))
     {
       Console.WriteLine("Dosya oluşturuldu: " + dosyaYolu);
     }
   }
   catch (Exception e)
   {
     Console.WriteLine("Hata oluştu: " + e.Message);
   }
 }
}

Bu örnekte, ornek.txt adında bir dosya oluşturulur. using bloğu, FileStream nesnesinin otomatik olarak kapatılmasını sağlar, böylece kaynakların serbest bırakılması garanti edilir.

Dosya Silme

Bir dosyayı silmek için File.Delete() metodu kullanılır. Bu metot, belirtilen yoldaki dosyayı siler.

C#
using System;
using System.IO;

public class DosyaIslemleri
{
 public static void Main(string[] args)
 {
   string dosyaYolu = "ornek.txt";
  
   try
   {
     File.Delete(dosyaYolu);
     Console.WriteLine("Dosya silindi: " + dosyaYolu);
   }
   catch (Exception e)
   {
     Console.WriteLine("Hata oluştu: " + e.Message);
   }
 }
}

Bu örnekte, ornek.txt adlı dosya silinir. Dosya silinirken bir hata oluşursa (örneğin, dosya bulunamazsa), bir istisna yakalanır ve hata mesajı görüntülenir.

Dosyaya Yazma

C#’ta bir dosyaya veri yazmak için StreamWriter sınıfı kullanılır. Bu sınıf, bir dosyaya metin yazmak için gerekli olan metotları sağlar.

StreamWriter Kullanımı

StreamWriter sınıfı, bir dosyaya metin yazmak için kullanılan temel sınıflardan biridir. Aşağıdaki örnek, StreamWriter kullanarak bir dosyaya nasıl veri yazılacağını gösterir:

C#
using System;
using System.IO;

public class DosyaIslemleri
{
 public static void Main(string[] args)
 {
   string dosyaYolu = "ornek.txt";
  
   try
   {
     using (StreamWriter sw = new StreamWriter(dosyaYolu))
     {
       sw.WriteLine("Merhaba, Dünya!");
       sw.WriteLine("Bu bir örnek dosyadır.");
     }
     Console.WriteLine("Dosyaya yazıldı: " + dosyaYolu);
   }
   catch (Exception e)
   {
     Console.WriteLine("Hata oluştu: " + e.Message);
   }
 }
}

Bu örnekte, ornek.txt dosyasına iki satır metin yazılır. using bloğu, StreamWriter nesnesinin otomatik olarak kapatılmasını sağlar.

Dosyadan Okuma

C#’ta bir dosyadan veri okumak için StreamReader sınıfı kullanılır. Bu sınıf, bir dosyadan metin okumak için gerekli olan metotları sağlar.

StreamReader Kullanımı

StreamReader sınıfı, bir dosyadan metin okumak için kullanılan temel sınıflardan biridir. Aşağıdaki örnek, StreamReader kullanarak bir dosyadan nasıl veri okunacağını gösterir:

C#
using System;
using System.IO;

public class DosyaIslemleri
{
 public static void Main(string[] args)
 {
   string dosyaYolu = "ornek.txt";
  
   try
   {
     using (StreamReader sr = new StreamReader(dosyaYolu))
     {
       string satir;
       while ((satir = sr.ReadLine()) != null)
       {
       Console.WriteLine(satir);
       }
     }
     Console.WriteLine("Dosyadan okundu: " + dosyaYolu);
   }
   catch (Exception e)
   {
     Console.WriteLine("Hata oluştu: " + e.Message);
   }
 }
}

Bu örnekte, ornek.txt dosyasındaki tüm satırlar okunur ve konsola yazdırılır. StreamReader.ReadLine() metodu, dosyanın sonuna ulaşılana kadar satır satır okuma yapar. using bloğu, StreamReader nesnesinin otomatik olarak kapatılmasını sağlar.

Dosya Kopyalama ve Taşıma

C#’ta dosyaları kopyalamak ve taşımak için File sınıfının statik metotları kullanılır.

Dosya Kopyalama

Bir dosyayı kopyalamak için File.Copy() metodu kullanılır. Bu metot, belirtilen yoldaki dosyayı belirtilen hedef yola kopyalar.

C#
using System;
using System.IO;

public class DosyaIslemleri
{
 public static void Main(string[] args)
 {
   string kaynakDosya = "ornek.txt";
   string hedefDosya = "kopya.txt";
  
   try
   {
     File.Copy(kaynakDosya, hedefDosya);
     Console.WriteLine("Dosya kopyalandı: " + hedefDosya);
   }
   catch (Exception e)
   {
     Console.WriteLine("Hata oluştu: " + e.Message);
   }
 }
}

Bu örnekte, ornek.txt dosyası kopya.txt olarak kopyalanır. Eğer hedef dosyası zaten varsa, File.Copy() metodu bir istisna fırlatır. Bu durumu önlemek için, metodun ikinci parametresine true değeri verilebilir. Bu durumda, hedef dosya varsa üzerine yazılır.

Dosya Taşıma

Bir dosyayı taşımak için File.Move() metodu kullanılır. Bu metot, belirtilen yoldaki dosyayı belirtilen hedef yola taşır.

C#
using System;
using System.IO;

public class DosyaIslemleri
{
 public static void Main(string[] args)
 {
   string kaynakDosya = "ornek.txt";
   string hedefDosya = "yeni_dizin/ornek.txt";
  
   try
   {
     File.Move(kaynakDosya, hedefDosya);
     Console.WriteLine("Dosya taşındı: " + hedefDosya);
   }
   catch (Exception e)
   {
     Console.WriteLine("Hata oluştu: " + e.Message);
   }
 }
}

Bu örnekte, ornek.txt dosyası yeni_dizin adlı bir dizine taşınır. Eğer hedef dizin yoksa, bir istisna fırlatılır. Bu nedenle, dosya taşınmadan önce hedef dizinin oluşturulduğundan emin olunmalıdır.

Özet

Bu makalede, C# programlama dilinde temel dosya işlemlerini (File I/O) inceledik. Dosya oluşturma, silme, okuma, yazma, kopyalama ve taşıma gibi temel operasyonları örnek kodlarla açıkladık. Dosya işlemlerinin, uygulamalarımızın kalıcı veri saklaması ve dış kaynaklardan veri alması için ne kadar önemli olduğunu vurguladık. C# ile dosya işlemleri yaparken dikkat edilmesi gereken noktaları ve olası hataları ele aldık. System.IO namespace’inin sunduğu zengin araçlarla, dosya işlemlerini kolayca gerçekleştirebilirsiniz.

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*