Единственный правильный способ проверить, существует ли файл, - это попытаться открыть его. Единственный правильный способ проверить, доступен ли файл для записи, - это попытаться открыть его для записи. Все остальное - это состояние гонки. (Другие вызовы API могут сказать вам, если файл существовал минуту назад , но даже если бы он существовал, он может не существовать эти 15 наносекунд спустя, когда вы попытаетесь открыть его, так что они в основном бесполезны )
Однако, если вы хотите знать, существует ли файл, не открывая его, просто используйте функцию boost::filesystem::exists
. Но знайте о зияющем недостатке в этом. Он не сообщает вам, существует ли файл, он сообщает, существует ли файл .
Так что будьте осторожны, как вы используете это. Не думайте, что только потому, что функция вернула true, файл будет существовать, когда вы на самом деле попытаетесь его открыть.
Если вам нужно знать, «смогу ли я открыть этот файл», тогда единственный способ выяснить это - попытаться открыть его.