Реализовать собственную библиотеку для работы с файловой системой с использованием парадигмы RAII.
- Создавать объект, который берёт на себя управление файлом (открывает его при создании).
- Закрывать файл по завершении жизненного цикла объекта.
- Реализовать методы
readLine()иwriteLine(). - В случае ошибок выбрасывать
exception. - Создать демонстрационную программу, показывающую:
- чтение и запись;
- закрытие файла по RAII;
- обработку ошибок.
Был реализован класс FileHandler, отвечающий за автоматическое управление ресурсами файла. Ниже приведён список его методов и полей:
FileHandler(const std::filesystem::path& filePath, Mode mode)— конструктор, открывающий файл в заданном режиме.void writeLine(const std::string& line)— записывает строку в файл.std::string readLine()— считывает одну строку из файла.void checkFileIsOpen()— проверяет, открыт ли файл (вспомогательный метод).void checkMode(Mode expected) const— проверяет, соответствует ли текущий режим ожиданиям (вспомогательный метод).
enum class Mode { Read, Write, ReadWrite }— определяет режим открытия файла.
std::unique_ptr<std::fstream, StreamDeleter> stream— указатель на файловый поток с пользовательским делетером для безопасного закрытия.std::filesystem::path filePath— путь к файлу.Mode openMode— режим, в котором открыт файл.
- Класс не копируемый, но перемещаемый, что предотвращает двойное управление файлом.
- Исключения выбрасываются с помощью
std::runtime_errorпри ошибках открытия, чтения/записи или неправильном режиме.