📁 Файлова система в C++

У C++ є два основні способи роботи з файлами:

1️⃣ Робота з файлами через <fstream>

Бібліотека <fstream> надає три основні класи:

🔹 Запис у файл

#include <iostream>
#include <fstream>

int main() {
    std::ofstream file("example.txt");

    if (file.is_open()) {
        file << "Привіт, світ!" << std::endl;
        file.close();
    }

    return 0;
}
📌 Створюється файл example.txt, у нього записується текст, після чого файл закривається.

🔹 Читання з файлу

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::ifstream file("example.txt");
    std::string line;

    if (file.is_open()) {
        while (std::getline(file, line)) {
            std::cout << line << std::endl;
        }
        file.close();
    }

    return 0;
}
📌 std::getline() читає файл пострічково.

🔹 Режими відкриття файлу

Режим Опис
ios::in читання
ios::out запис
ios::app додавання в кінець
ios::binary бінарний режим
ios::trunc очистити файл
std::ofstream file("data.bin", std::ios::binary);

2️⃣ Бібліотека <filesystem> (C++17)

Починаючи зі стандарту C++17 з’явилась бібліотека std::filesystem.

🔹 Перевірка існування файлу

#include <iostream>
#include <filesystem>

namespace fs = std::filesystem;

int main() {
    if (fs::exists("example.txt")) {
        std::cout << "Файл існує" << std::endl;
    }
}

🔹 Інші можливості

fs::create_directory("test_folder");
fs::remove("example.txt");

auto size = fs::file_size("example.txt");
std::cout << "Розмір: " << size << " байт";

for (const auto& entry : fs::directory_iterator(".")) {
    std::cout << entry.path() << std::endl;
}

3️⃣ Абсолютний та відносний шлях

Відносний шлях:

data/file.txt

Абсолютний шлях:

C:/Users/User/Documents/file.txt
std::cout << fs::current_path();

4️⃣ Обробка помилок

try {
    fs::create_directory("test");
}
catch (fs::filesystem_error& e) {
    std::cout << e.what();
}

Підсумок

Для чого Що використовувати
Читання/запис <fstream>
Робота з папками <filesystem>
Бінарні файли ios::binary
Перевірка існування fs::exists()
Семестр №1
Наші партнери