@NeYmen

Как проверять существование файла C++?

У меня есть функция, которая копирует данные из одного файла в другой. Мне нужно сделать так, чтобы если выходной файл(outfile) существует, выводилось сообщение, что данные в этом файле заменены, а если такого файла нет, то выводилось сообщение файл создан.
  • Вопрос задан
  • 93 просмотра
Решения вопроса 2
Ответ написан
Комментировать
@res2001
Developer, ex-admin
В C++17 есть std::filesystem::exists.
В более ранних версиях C++ можно после открытия сразу перейти в конец файла и посмотреть текущую позицию. Если позиция 0, то файл либо был пустой при открытии, либо вновь только что созданнался. После этого надо опять вернуться на начало файла.
Вместо ofstream можно использовать функцию std::fopen, там можно с помощью параметра mode запретить открывать не существующий файл. Если функция вернет пустой FILE*, то либо файл не существует, либо произошла другая ошибка. Можно дальше проанализировать значение переменной errno, чтоб отделить ситуацию отсутствия файла от других возможных ошибок, но это уже платформозависимо.

Так же можно использовать API ОС для проверки существования файла. В линукс - stat(..).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы