# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.yavuzlar.org/egitim/c-plus-plus/3.0-siniflar/3.9-dosyalar-files.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
