Как проверить существование файла или каталога в C++?
Проверка наличия каталога или файла — одна из наиболее распространенных операций, выполняемых файловой системой в операционной системе. Большинство языков программирования предлагают некоторый уровень доступности файловой системы в виде библиотечных функций. В этой статье вы узнаете, как протестировать файл или каталог, существующий в C++.
Note: stat function present in the sys/stat.h header file would be used in the program. The function is not a part of the C++ standard library.
Проверка/тестирование наличия каталога
stat — это предопределенная функция, представленная в заголовочном файле sys/stat.h . Функция принимает путь и структуру в качестве аргументов, в которых будут храниться метаданные, связанные с файлом/каталогом, если они присутствуют. Функция возвращает значение 0, если путь правильный. Для демонстрации мы будем тестировать наличие следующего каталога:
Пример:
C++
// C++ Program to test presence of file/Directory #include <iostream> #include <sys/stat.h> using namespace std; int main() { // Path to the directory const char * dir = "C:Usersapples" ; // Structure which would store the metadata struct stat sb; // Calls the function with path as argument // If the file/directory exists at the path returns 0 // If block executes if path exists if (stat(folder, &sb) == 0) cout << "The path is valid!" ; else cout << "The Path is invalid!" ; return 0; } |
Выход:
The path is valid!
Объяснение: Во-первых, путь к каталогу хранится в переменной указателя dir . Затем пустая структура инициализируется форматом, присутствующим в заголовочном файле статистики. Это будет хранить метаданные. Затем внутри условия if, где выполняется вызов функции stat . Если путь действителен, т. е. файл/каталог существует, то вывод будет равен 0, в противном случае он будет ненулевым. Следовательно, если условие будет истинным, если путь действителен, в противном случае будет выполнен блок else, отображающий недопустимый путь! сообщение.
Проверка/тестирование наличия файла
Вышеупомянутый процесс также можно использовать для определения наличия файла внутри каталога. С некоторыми незначительными изменениями в предыдущем коде также можно проверить наличие файлов. Следовательно, в этом примере будет предпринята попытка обнаружить следующий файл
Пример:
Выход:
The path is valid!
Объяснение: Во-первых, путь к файлу хранится в переменной указателя файла . Затем пустая структура инициализируется форматом, присутствующим в заголовочном файле статистики . Это будет хранить метаданные. Затем внутри условия if, где выполняется вызов функции stat . Если путь действителен, т. е. файл существует, то вывод будет равен 0, в противном случае он будет ненулевым. Затем мы проверяем, ведет ли путь к каталогу, используя флаг S_IFDIR . Если это так, то путь действителен, но относится к каталогу, иначе это путь к файлу.
Note: The process for determining path to a file works on Windows and Linux Distributions.