> For the complete documentation index, see [llms.txt](https://docs.yavuzlar.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.yavuzlar.org/egitim/c-plus-plus/3.0-siniflar/3.9-dosyalar-files.md).

# 3.9 Dosyalar (Files)

C++, dosyalarla etkileşim kurmak için geniş bir kütüphane sunar. Dosyalar, verilerin kalıcı olarak saklanmasını ve programlar arasında veri paylaşımını sağlar. C++'da dosya işlemleri genellikle `fstream` kütüphanesi aracılığıyla gerçekleştirilir. Bu kütüphane, dosyaları açma, okuma, yazma ve kapama gibi işlemleri yapmamıza olanak tanır.

**Dosya Türleri**

C++'da üç ana dosya türü vardır:

1. **Giriş Dosyası (Input File)**: Dosyadan veri okumak için kullanılır. `ifstream` sınıfı ile temsil edilir.
2. **Çıkış Dosyası (Output File)**: Dosyaya veri yazmak için kullanılır. `ofstream` sınıfı ile temsil edilir.
3. **Giriş/Çıkış Dosyası (Input/Output File)**: Hem okuma hem de yazma işlemleri için kullanılır. `fstream` sınıfı ile temsil edilir.

**Temel Dosya İşlemleri**

Aşağıda, C++ kullanarak dosya okuma ve yazma işlemleri için temel bir örnek bulunmaktadır.

**Dosyaya Yazma Örneği**

```cpp
#include <iostream>
#include <fstream>
using namespace std;

int main() {
    // Çıkış dosyası oluşturma
    ofstream dosya("ornek.txt");

    if (dosya.is_open()) {
        dosya << "Merhaba, bu bir dosya yazma örneğidir." << endl;
        dosya << "C++ dilinde dosya işlemleri yapıyoruz." << endl;
        dosya.close(); // Dosyayı kapatma
        cout << "Veri dosyaya başarıyla yazıldı." << endl;
    } else {
        cout << "Dosya açılamadı." << endl;
    }

    return 0;
}
```

**Dosyadan Okuma Örneği**

```cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
    // Giriş dosyası açma
    ifstream dosya("ornek.txt");
    string satir;

    if (dosya.is_open()) {
        while (getline(dosya, satir)) {
            cout << satir << endl; // Satır satır okuma
        }
        dosya.close(); // Dosyayı kapatma
    } else {
        cout << "Dosya açılamadı." << endl;
    }

    return 0;
}
```

**Dosya İşlemleri**

* **Dosya Açma**: `open()` fonksiyonu kullanılarak dosya açılabilir.
* **Veri Yazma**: `<<` operatörü ile dosyaya veri yazılır.
* **Veri Okuma**: `>>` operatörü veya `getline()` fonksiyonu ile dosyadan veri okunur.
* **Dosya Kapama**: `close()` fonksiyonu ile dosya kapatılır. Dosyanın kapatılması, verilerin dosyaya yazılması için önemlidir.

#### Dosya Hataları ile Baş Etme

C++'da dosya işlemleri yaparken, dosyanın açılmaması veya okuma/yazma hataları gibi durumlarla karşılaşabilirsiniz. Bu nedenle, dosya açma işlemlerinde `is_open()` metodu ile dosyanın başarılı bir şekilde açılıp açılmadığını kontrol etmek önemlidir.

#### Sonuç

C++ dilinde dosyalar, verilerin saklanması ve paylaşılması için önemli bir araçtır. `fstream`, `ifstream` ve `ofstream`sınıfları, dosya işlemlerini kolaylaştırarak yazılımcılara esneklik sağlar.
