Метод exists
Метод exists класса directory_entry проверяет,
существует ли файл или каталог, связанный с данной записью.
Метод не принимает параметров и возвращает true,
если объект файловой системы существует, и false в противном случае.
Если во время проверки произошла ошибка, метод выбрасывает исключение
типа filesystem_error.
Синтаксис
bool exists() const;
Пример
Давайте создадим запись directory_entry для файла
/var/www/index.html и проверим его существование:
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::directory_entry entry("/var/www/index.html");
if (entry.exists()) {
cout << "exists" << endl;
} else {
cout << "not exists" << endl;
}
return 0;
}
Результат выполнения кода:
"exists"
Пример
Давайте проверим существование несуществующего файла:
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::directory_entry entry("/var/www/unknown.html");
if (entry.exists()) {
cout << "exists" << endl;
} else {
cout << "not exists" << endl;
}
return 0;
}
Результат выполнения кода:
"not exists"
Пример
Давайте переберём содержимое каталога и для каждой записи
выведем имя файла и результат проверки exists:
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::directory_iterator it("/var/www");
for (const fs::directory_entry& entry : it) {
cout << entry.path().filename().string()
<< " - " << entry.exists() << endl;
}
return 0;
}
Результат выполнения кода:
"index.html - 1"
"style.css - 1"
"script.js - 1"
Смотрите также
-
класс
directory_entry,
который представляет запись о файле или каталоге -
метод
path,
который возвращает путь записи directory_entry -
метод
is_directory,
который проверяет, является ли запись каталогом -
метод
is_regular_file,
который проверяет, является ли запись обычным файлом