РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
519 of 815 menu

Класс file_status

Класс file_status из библиотеки <filesystem> представляет собой контейнер для хранения информации о типе файла и его правах доступа. Объекты этого класса возвращаются такими функциями, как status и symlink_status. Тип файла хранится в виде значения перечисления file_type, а права доступа - в виде битовой маски типа perms. Класс не хранит имя файла и не выполняет операций ввода-вывода - он лишь переносит уже полученный результат проверки.

Синтаксис

#include <filesystem> class file_status; // конструкторы file_status() noexcept; explicit file_status(file_type type) noexcept; file_status(file_type type, perms permissions) noexcept; // методы file_type type() const noexcept; void type(file_type type) noexcept; perms permissions() const noexcept; void permissions(perms permissions) noexcept;

Пример

Давайте получим статус обычного файла и выведем его тип:

#include <iostream> #include <filesystem> #include <fstream> using namespace std; namespace fs = std::filesystem; int main() { ofstream("test.txt") << "data"; fs::file_status st = fs::status("test.txt"); if (st.type() == fs::file_type::regular) { cout << "regular file" << endl; } fs::remove("test.txt"); return 0; }

Результат выполнения кода:

"regular file"

Пример

Давайте создадим объект file_status вручную и проверим его тип и права доступа:

#include <iostream> #include <filesystem> using namespace std; namespace fs = std::filesystem; int main() { fs::file_status st(fs::file_type::directory, fs::perms::owner_read | fs::perms::owner_write); cout << (st.type() == fs::file_type::directory) << endl; fs::perms p = st.permissions(); cout << ((p & fs::perms::owner_write) != fs::perms::none) << endl; return 0; }

Результат выполнения кода:

1 1

Пример

Давайте проверим, что путь "/no/such/file" не существует, сравнив тип статуса с file_type::not_found:

#include <iostream> #include <filesystem> using namespace std; namespace fs = std::filesystem; int main() { fs::file_status st = fs::status("/no/such/file"); if (st.type() == fs::file_type::not_found) { cout << "not found" << endl; } return 0; }

Результат выполнения кода:

"not found"

Смотрите также

  • класс path,
    который представляет путь к файлу
  • функция exists,
    которая проверяет существование файла
  • функция is_regular_file,
    которая проверяет, что путь указывает на обычный файл
  • функция is_directory,
    которая проверяет, что путь указывает на каталог
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить