Что состоит в том, чтобы проверить лучший способ, существует ли файл в C++? (кросс-платформенный)

95
задан Community 23 May 2017 в 12:26
поделиться

6 ответов

Использование повышение:: файловая система :

#include <boost/filesystem.hpp>

if ( !boost::filesystem::exists( "myfile.txt" ) )
{
  std::cout << "Can't find my file!" << std::endl;
}
159
ответ дан lnafziger 24 November 2019 в 05:44
поделиться

Остерегайтесь условий состязания: если файл исчезает между, "существует" проверка и время, Вы открываете его, Ваша программа неожиданно перестанет работать.

лучше пойти и открыть файл, проверить на отказ и если все хорошо, тогда делают что-то с файлом. Это еще более важно с критическим по отношению к безопасности кодом.

Детали о безопасности и условиях состязания: http://www.ibm.com/developerworks/library/l-sprace.html

41
ответ дан rlerallut 24 November 2019 в 05:44
поделиться

Я - счастливый пользователь повышения и конечно использовал бы решение Andreas. Но если у Вас не было доступа к повышению, освобождает Вас, может пользоваться потоковой библиотекой:

ifstream file(argv[1]);
if (!file)
{
    // Can't open file
}

Это не совсем столь же хорошо как повышение:: файловая система:: существует, так как файл будет на самом деле открыт..., но тогда это обычно - следующая вещь, которую Вы хотите сделать так или иначе.

30
ответ дан MattyT 24 November 2019 в 05:44
поделиться

Используйте статистику (), если это является достаточно межплатформенным для Ваших потребностей. Это не стандарт C++ хотя, но POSIX.

На MS Windows существует _stat, _stat64, _stati64, _wstat, _wstat64, _wstati64.

11
ответ дан activout.se 24 November 2019 в 05:44
поделиться

Как насчет access?

#include <io.h>

if (_access(filename, 0) == -1)
{
    // File does not exist
}
9
ответ дан Rob 24 November 2019 в 05:44
поделиться

Я пересмотрел бы попытку узнать, существует ли файл. Вместо этого необходимо попытаться открыть его (в Стандарте C или C++) в том же режиме, Вы намереваетесь использовать его. Какое использование знает, что файл существует, если, скажем, это не перезаписываемо, когда необходимо использовать его?

7
ответ дан fizzer 24 November 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: