C++ Dosyalama İşlemleri
Merhaba arkadaşlar, bu dersimizde C++ ‘da dosyalama işlemlerini yapacağız. Dosyalama işlemi ile yaptığımız programları hafızaya kaydederiz.Dosyalar, farklı tiplerde olabilir ve bilgi depolayan yapılardır.
C++’da iki şekilde dosyalama vardır. Text ve Binary dosyalamadır.Aralarındaki bazı farklar şunlardır;
-Text dosyalara erişim sıralı olarak yapılırken binary dosyalara rasgele erişim vardır.
-Text dosyalarında yazılan son veriler dosya sonu işareti olur.
-Text dosyalarında okuma ilk verilerden başlanarak yapılır.Binary dosyada anahtar vasıta ile doğrudan yapılır.
-Kayıt silme işleminde silinen veriden sonra kalan veriler tekrar sıralanır.
-Text dosyalarında veriler yan bekllek içerisinde uzunluklarınca yer kaplarlar.Binary dosyalamada ise veri tipinin boyu kadar yer kaplarlar.
-Binary dosyalar aynı anda yazma ve okuma işlemleri için kullanılabilir. Text dosyaları kullanılmaz.
-Hız gerekli olan programlarda ve sayıların değerlerin olduğu programlarda binary dosyalama kullanılır.
C++ dosyalama için;
-fstream:Hem yazma hem de okuma işlemleri için kullanılan sınıf
-ofstream:Dosyadan veri okuma için kullanılan sınıf
-ifstream:Dosyaya veri yazma işlemi için kullanılan sınıftır.
C++’da Text Dosyalar
Dosyaya ilk veriyi ekledikten sonra eklenen veriler sırasıyla bu verinin arkasına eklenir.
Dosyadan veri okuma sırası;
1-Önce dosya sağlamlığına bakılır.
2-Dosya sonuna bakılır.
3-.Bu iki durum dosya sağlama ile son kayıt değilse bir kayıt okunur.Aynı işlemler bundan sonraki tüm işlemler için gerçekleştirilir.
Dosya Açma
Bu dosyalama işlemleri gerçekleştirmek için fiziksel olarak bir dosya oluşturmamız lazım.Dosya oluşturma;
open(dosyaadi,mod);
Burada mod dosyayı hangi amaç için açtığımız için gereklidir.
Dosyaya Kayıt Yapmak
-Dosyanın açılması(dosya1.open(“isim.txt”)
-Verinin yazılması (dosya1<<“isim kayit dosyasi:\n”; )
-Dosyanın kapatılması(dosya1.close())
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include "stdafx.h" #include <iostream> #include<fstream> using namespace std; int main() { ofstream dosya1; dosya1.open("isim.txt"); dosya1 << "Isim kayit dosyasi:\n"; dosya1.close(); //ile dosya kapanır cout << "Dosyaya kayit yapildi" << endl; system("Pause"); return 0; } |
Bu programı çaşıtırdıktan sonra dosya projenin adı ile aynı isimli klasörün içindedir.
Birde dosyamıza adımızı kaydedelim;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include "stdafx.h" #include <iostream> #include<string> #include<fstream> using namespace std; string ad; char cvp; int main() { ofstream dosya1("isimler.txt",ios::out | ios::app); if (dosya1.is_open()) { do { cout << "Adinizi giriniz :" << endl; cin >> ad; cout << "Devam etmek istiyor musunuz (e/h) : " << endl; cin >> cvp; } while ((cvp != 'h')&(cvp != 'H')); dosya1.close; cout << "Dosya yazildi" << endl; } else cout << "Dosya acilamadi"; system("Pause"); return 0; } |
Dosya Okuma Yapmak
-Dosya açılır.
-Veriler okunur.
-Dosya kapatılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include "stdafx.h" #include <iostream> #include<string> #include<fstream> using namespace std; string ad; char cvp; int main() { ofstream dosya1("isimler.txt",ios::in); if (dosya1.is_open()) { do { dosya1 >> ad; cout << ad << endl; } while (!dosya1.eof()); dosya1.close; cout << "Dosyada adlar okundu" << endl; } else cout << "Dosya acilamadi"; system("Pause"); return 0; } |
Böylece dosyamızdaki verileri okumuş oluruz.
Dosyada Arama Yapma
-Dosya açılır.
-Aranacak veri girilir.
Veri bulununca listelenir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include "stdafx.h" #include <iostream> #include<string> #include<fstream> using namespace std; string ad; char cvp; int main() { ofstream dosya1("isimler.txt",ios::in); string arananisim; cout << "Aranacak isim :" << endl; cin >> arananisim; if (dosya1.is_open()) { int x = 0; do { dosya1 >> ad; if (ad == arananisim) { cout << ad << endl; k = 1; } } while (!dosya1.eof()); dosya1.close; if (x == 0) cout << "Dosyada kayıtlı isim yok" << endl; } else cout << "Dosya acilamadi"; system("Pause"); return 0; } |
Dosyadan Kayıt Silme/Güncelleme
Txt dosyalarında istenen veri dosyadan çıkaramıyoruz.Değiştirme işleminide gerçekleştiremiyoruz.
Bu işlemler için;
İki txt dosyası oluştururuz biri geçici olarak birisi bize öncülük etmesi için,
Her okunan veri yapılacak işlemler için kayıtlar var mı diye kontrol edilir.Eğer kayıtlı değilse kayıt işlemleri gerçekleştirilir.
Dosya silinecekse kayıt geçici olarak kaydedilmez.Güncellenen kayıt yeni biçimiyle kaydedilir.
Dosya sonunda iki dosya kapatılır.
dosyadan veri okuma işleminde “ifstream” yerine “ofstream” kullanmışsın.
Merhaba,
Çoklu dosya açma ve içinde arama nasıl yapılıyor? Yani bir kelimeyi birden fazla dosyada -dosyaların isimlerini tek tek yazmadan, dosya isimleri dizi elemanları şeklinde olan bir yerde- nasıl aratırız?