C#'ta Dosya İşlemleri
C#'ta dosya işlemleri temel olarak akımlar (streamler) üzerine kuruludur. Akım (Stream), byte düzeyinde bir girdi bilgisi oluşturan veya çıktı bilgisi elde eden mantıksal bir birimdir. Bu birimler I/O sistemi aracılığıyla dosya, ekran gibi fiziksel aygıta bağlanır. Bu konuda en çok kullanılan dosya tipi disk dosyalarıdır. Disk üzerinde bilgi okuma, yazma, klavyeden bilgi alma ve ekrana bilgi yazdırma gibi işlemler için akım yöntemi kullanılır. Akım (Stream) yöntemi okuma veya yazma bakımından bellek kadar hızlı ve kullanışlı olmadığı için ve işletim sistemi düzeyinde tüm dosyaların byte olması nedeniyle okuma, yazma işlemleri bir kere de değil parça parça byte olarak işlenir.
.NET Framework’te hem byte hem de karakter akımı sınıflar mevcuttur. Karakter akımı sınıflar temelde byte akımı sınıfları kullanır. Akım (Stream) sınıflarının temelini soyut bir sınıf olan "System.IO.Stream" sınıfı oluşturur. MemoryStream ve FileStream byte Stream sınıfından türemiş sınıflardır. Karakter akımı için kullanılan StreamWriter, StreamReader sınıfları ise TextWriter ve TextReader sınıflarından türemiş sınıflardır. Bu akımlara ek olarak kullanılan binary(ikili) akım yönteminde ise BinaryWriter ve BinaryReader sınıfları kullanılır.
Temelde metin tabanlı dosyaları okuma, yazma işlemleri için TextWriter, TextReader ve bu sınıflardan türemiş diğer sınıflar kullanılır. İkili (Binary) dosyalar için BinaryReader ve BinaryWriter sınıfları kullanılır. Her iki dosya tipinde çalışmak için ise FileStream ve bu sınıftan türeyen sınıflar kullanılır.