C++ Dosya İşlemleri

C++ dosya işlemleri yapabilmek için bilinmesi gereken 3 tane veri tipi vardır. Bunlar; ofstream, ifstream ve fstream kurucularıdır. Bu veri tiplerini kullanabilmek için standart fstream kütüphanesi programa koduna dahil edilmelidir.

ofstream(output file stream): Sadece dosya oluşturma ve üzerine yazma işlemlerinde kullanılır.
ifstream(input file stream): Dosya okuma işlemlerinde kullanılır.
fstream(file stream): Dosya okuma, yazma ve oluşturma işlemleri için kullanılır.

Dosya Oluşturma

Dosya oluşturmak için ofstream veya fstream tanımlı dosya değişkeni tanımlanır. Dosya değişkeni tanımlandıktan sonra fstream kütüphanesine ait open metodu ile dosya açma işlemi aşağıdaki gibi gerçekleştirilir.
#include <iostream>
#include <fstream>

using namespace std;

int main(){
    fstream file;
    file.open("dosya.txt");
    file.close();
    return 0;
}
open metodunda birinci parametre olarak dosya ismi uzantısı ile verildi. Bu metot içerisinde ikici parametre olarak bayrakları kullanabiliriz. Bayraklar (mod flags) dosyanın program içerisinde nasıl çalışacağına dair özellikler vermemizi sağlar. Örneğin dosyanın program içerisinde sadece okunabilir olmasını sağlayabiliriz. Bu da dosyaya yazma işlemi yapamayız demektir.
Bayraklar (mod flags)
ios::in Açılan dosya üzerinde okuma izni.
ios::out Açılan dosya üzerinde yazma izni.
ios::binary Dosyayı binary modda açma.
ios::ate Başlangıç sonu ayarlama.
ios::app Dosya içeriği sondan eklemeli olur. Yeni eklenen içerik, mevcut içeriğin sonuna eklenir.
ios::trunc Eğer aynı isimde bir dosya mevcutsa, o dosya içeriği silinir.
ofstream, ifstream ve fstream sınıfları varsayılan olarak bu bayraklardan bazılarına sahip.

ofstream | ios::out
ifstream | ios::in
fstream | ios::out - ios::in
#include <iostream>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(){
    string veri;
    fstream file;
    int i = 0;
    file.open("dosya.txt", ios::out|ios::app);

    if(file.is_open()){
        while(i<5){
            file << "super";
            i++;
        }
    }
    file.close();
    return 0;
}
Yukarıdaki örnekte dosyaya yazma işlemi gerçekleştirildi. Birden fazla bayrak bildiriminde bulunurken OR(|) işareti ile ayrılarak kullanılır. ios::app bayrağını kullandığımız için programı iki kere çalıştırırsak, dosya.txt içerisinde on tane "super" kelimesi yazdığı görülecektir.

is_open() fonksiyonu, üzerinde işlem yapılacak dosyanın açık olup olmadığını kontrol eder.

Dosya içeriğini okumak içinse aşağıdaki örnek incelenmelidir:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(){
    string veri;
    fstream file;
    file.open("dosya.txt", ios::in);

    if(file.is_open()){
        while(!file.eof()){
            file >> veri;
            cout << veri;
        }
    }

    file.close();
    return 0;
}
Programda işlem yaptığımız her dosyayı, işimiz bittiğinde close() fonksiyonu ile kapatmalıyız.

eof() fonksiyonu, eğer döngü dosya içeriğinin son satırına ulaştıysa true boolean değerini döndürür. Açılımı end of file.

Hiç yorum yok:

Yorum Gönderme