Dosya İşleme

Bir program yazılırken program içerisinde kullanılan değişkenler, diziler ve diğer veri yapıları verileri geçici olarak hafızada tutmaktadır. Bu şekilde hafızada tutulan veriler programın çalışması sonlandığında kaybolmaktadır. Bundan dolayı dosyalar, büyük miktarda verileri kalıcı olarak hafızada tutmak için kullanılırlar.

Dosya işlemleri; yeni bir dosya oluşturma, var olan dosyanın kullanılmak üzere açılması, dosyaya veri yazılması, dosyadan veri okunması ve dosyanın sonlandırılması süreçlerini kapsamaktadır.

Akış (stream), veri akışını ifade etmek için kullanılan kavramsal bir terimdir. C++ programlama dilinde bir akış, belirli bir sınıfın nesnesi olarak sembolize edilir.

Akışlar iki çeşittir. Birincisi programın yazabileceği, ikincisi ise okuyabileceği akıştır.

Farklı türde veri akışlarını temsil etmek için farklı akışlar kullanılır.

Dosyaya veri yazma ve dosyadan veri okuma işlemlerini gerçekleştirmede kullanılacak olan iostream akış sınıfının alt sınıfları ofstream, ifstream ve fstream’dir.

ofstream, dosyaya yazma işlemlerinde kullanılmaktadır.

ifstream, dosyadan okuma yapma işleminde kullanılmaktadır.

fstream, dosya giriş-çıkış işlemlerini birlikte gerçekleştirmektedir.

Dosya, aynı türden verilerin belirli bir düzende kayıt ortamına (disk, CD vs.) yazılmasıyla oluşturulan bir yapıdır.

Dosyalar, kayıt edildikleri ortama göre, içeriğine erişim yöntemine göre, içerdikleri verinin yapısına göre farklı bakış açılarından sınıflara ayrılabilir.

Dosya açılırken dosyanın bulunduğu dizinin, dosya ile nasıl bir işlem yapılacağı bilgisinin ve dosya tipinin belirtilmesi gerekmektedir. Bu işlemlere dosya açma modları ismi verilmektedir.

ios::app, ios::in, ios::out, ios::ate, ios::trunc, ios::binary, ios::nocreate ve ios::noreplace dosya okuma modlarından bazılarıdır.

Dosya işlemede, program içerisinde dosya oluşturma, dosya açma ve kapatma, dosyadan veri okuma, dosyaya veri yazma adımları yer almaktadır.

Dosya işlemleri var olan bir dosya üzerinde yapılabilir. Fakat belirtilen dizinde eğer dosya yoksa uygun prosedürlere göre yeni bir dosya oluşturulur.

Program içerisinde verilerin kalıcı olarak saklanması için dosyaya yazma işlemi uygulanır.

Rastgele erişimli dosyalarda indeks yerine seek() özel fonksiyonu kullanılarak verilere ulaşılmaktadır.

seek fonksiyonu seekg ve seekp formlarında kullanılır.

Dosya işaretçisinin ileri ya da geriye doğru hareket ettirilmesi için byte sayısı parametre değeri negatif ya da pozitif olabilir.

Pozitif değerler işaretçiyi dosyanın sonuna doğru (ileri yönde), negatif değerler ise işaretçiyi dosyanın başına doğru (geri yönde) taşır.

Program içerisinde rastgele erişimli dosyadan okuma yapmak için kaynak koda başlık dosyasının eklenmesi gerekmektedir.

Giriş işlemi yani dosyadan okuma için dosya açıldıktan sonra >> akış sembolü kullanılarak okuma işlemi gerçekleştirilmelidir.

Program sonunda açılan dosya close() fonksiyonu ile kapatılmalıdır.