

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.
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.
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:
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:
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.
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.
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.
Bir yanıt bırakın