Spec-Zone.ru › Qt 6.1

Класс QFileInfo

Класс QFileInfo предоставляет информацию о файлах, независимую от операционной системы. Подробнее...

Заголовок: #include <QFileInfo>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются повторно входящими.

Открытые функции

QFileInfo(const QDir &dir, const std::filesystem::path &file)
QFileInfo(const std::filesystem::path &file)
QFileInfo(const QFileInfo &fileinfo)
QFileInfo(const QDir &dir, const QString &file)
QFileInfo(const QFileDevice &file)
QFileInfo(const QString &file)
QFileInfo()
QFileInfo & operator=(QFileInfo &&other)
QFileInfo & operator=(const QFileInfo &fileinfo)
~QFileInfo()
QDir absoluteDir() const
QString absoluteFilePath() const
QString absolutePath() const
QString baseName() const
QDateTime birthTime() const
QString bundleName() const
bool caching() const
QString canonicalFilePath() const
QString canonicalPath() const
QString completeBaseName() const
QString completeSuffix() const
QDir dir() const
bool exists() const
QString fileName() const
QString filePath() const
QDateTime fileTime(QFile::FileTime time) const
std::filesystem::path filesystemAbsoluteFilePath() const
std::filesystem::path filesystemAbsolutePath() const
std::filesystem::path filesystemCanonicalFilePath() const
std::filesystem::path filesystemCanonicalPath() const
std::filesystem::path filesystemFilePath() const
std::filesystem::path filesystemPath() const
std::filesystem::path filesystemSymLinkTarget() const
QString группа() const
uint идентификатор_группы() const
bool является_абсолютным() const
bool является_пакетом() const
bool является_каталогом() const
bool является_исполняемым() const
bool является_файлом() const
bool скрытый() const
bool является_соединением() const
bool является_родным_путем() const
bool читаемый() const
bool относительный() const
bool является_корневым() const
bool является_ярлыком() const
bool является_символической_ссылкой() const
bool является_символической_ссылкой() const
bool записываемый() const
QDateTime последнее_изменение() const
QDateTime последнее_чтение() const
bool сделать_абсолютным()
QDateTime время_изменения_метаданных() const
QString владелец() const
uint идентификатор_владельца() const
QString путь() const
bool разрешение(QFile::Permissions permissions) const
QFile::Permissions разрешения() const
void обновить()
void включить_кеширование(bool enable)
void установить_файл(const QString &file)
void установить_файл(const QFileDevice &file)
void установить_файл(const QDir &dir, const QString &file)
void setFile(const std::filesystem::path &file)
qint64 размер() const
void stat()
QString расширение() const
void обмен(QFileInfo &other)
QString цель_символической_ссылки() const
bool operator!=(const QFileInfo &fileinfo) const
bool operator==(const QFileInfo &fileinfo) const

Статические публичные члены

bool существует(const QString &file)

Связанные нечлены

QFileInfoList

Макросы

QT_НЕЯВНОЕ_СОЗДАНИЕ_QFILEINFO

Подробное описание

QFileInfo предоставляет информацию о имени и расположении (пути) файла в файловой системе, его правах доступа и является ли он каталогом или символической ссылкой и т. п. Также доступны размер файла и время последнего изменения/чтения. QFileInfo также может быть использована для получения информации о Qt ресурсе.

QFileInfo может указывать на файл с относительным или абсолютным путем к файлу. Абсолютные пути к файлам начинаются с разделителя каталогов "/" (или с указания диска в Windows). Относительные имена файлов начинаются с имени каталога или имени файла и указывают путь относительно текущего каталога. Пример абсолютного пути — строка "/tmp/quartz". Относительный путь может выглядеть как "src/fatlib". Вы можете использовать функцию isRelative(), чтобы проверить, использует ли QFileInfo относительный или абсолютный путь к файлу. Вы можете вызвать функцию makeAbsolute(), чтобы преобразовать относительный путь QFileInfo в абсолютный путь.

Примечание: Пути, начинающиеся с двоеточия (:), всегда считаются абсолютными, так как они обозначают QResource.

Файл, с которым работает QFileInfo, устанавливается в конструкторе или позже с помощью setFile(). Используйте существует() для проверки существования файла и размер() для получения его размера.

Тип файла получается с помощью isFile(), isDir() и isSymLink(). Функция цель_символической_ссылки() предоставляет имя файла, на который указывает символическая ссылка.

В Unix (включая macOS и iOS) функции-геттеры свойств в этом классе возвращают свойства, такие как время и размер целевого файла, а не символической ссылки, потому что Unix прозрачно обрабатывает символические ссылки. Открытие символической ссылки с помощью QFile фактически открывает целевой файл ссылки. Например:

#ifdef Q_OS_UNIX

QFileInfo info1("/home/bob/bin/untabify");
info1.isSymLink();          // returns true
info1.absoluteFilePath();   // returns "/home/bob/bin/untabify"
info1.size();               // returns 56201
info1.symLinkTarget();      // returns "/opt/pretty++/bin/untabify"

QFileInfo info2(info1.symLinkTarget());
info2.isSymLink();          // returns false
info2.absoluteFilePath();   // returns "/opt/pretty++/bin/untabify"
info2.size();               // returns 56201

#endif

В Windows ярлыки (.lnk файлы) в настоящее время обрабатываются как символические ссылки. Как и в системах Unix, функции-геттеры свойств возвращают размер целевого файла, а не .lnk файла. Это поведение устарело и, вероятно, будет удалено в будущих версиях Qt, после чего .lnk файлы будут обрабатываться как обычные файлы.

#ifdef Q_OS_WIN

QFileInfo info1("C:\\Documents and Settings\\Bob\\untabify.lnk");
info1.isSymLink();          // returns true
info1.absoluteFilePath();   // returns "C:/Documents and Settings/Bob/untabify.lnk"
info1.size();               // returns 743
info1.symLinkTarget();      // returns "C:/Pretty++/untabify"

QFileInfo info2(info1.symLinkTarget());
info2.isSymLink();          // returns false
info2.absoluteFilePath();   // returns "C:/Pretty++/untabify"
info2.size();               // returns 63942

#endif

Элементы имени файла могут быть извлечены с помощью path() и fileName(). Части fileName() можно извлечь с помощью baseName(), расширение() или completeSuffix(). Объекты QFileInfo для каталогов, созданных классами Qt, не будут иметь конечного разделителя файла. Если вы хотите использовать конечные разделители в своих собственных объектах информации о файлах, просто добавьте их к имени файла, указанному в конструкторах или setFile().

Даты файла возвращаются методами birthTime(), lastModified(), lastRead() и fileTime(). Информация о правах доступа к файлу получается с помощью методов isReadable(), isWritable() и isExecutable(). Владение файлом доступно через методы owner(), ownerId(), group() и groupId(). Вы можете проверить права доступа и владение файлом в одном операторе, используя функцию permission().

Примечание: В файловых системах NTFS проверка владения и прав доступа по умолчанию отключена по соображениям производительности. Чтобы включить её, добавьте следующую строку:

extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;

Проверка прав доступа затем включается и отключается путём инкремента и декремента qt_ntfs_permission_lookup на 1.

qt_ntfs_permission_lookup++; // turn checking on
qt_ntfs_permission_lookup--; // turn it off again

Проблемы производительности

Некоторые функции QFileInfo запрашивают информацию у файловой системы, но по соображениям производительности некоторые функции работают только с самим именем файла. Например: для возвращения абсолютного пути относительного имени файла, absolutePath() должна обратиться к файловой системе. Функция path(), однако, может работать непосредственно с именем файла, поэтому она быстрее.

Примечание: Для повышения производительности QFileInfo кэширует информацию о файле.

Поскольку файлы могут изменяться другими пользователями или программами, или даже другими частями той же программы, существует функция обновления информации о файле: refresh(). Если вы хотите отключить кэширование QFileInfo и каждый раз обращаться к файловой системе при запросе информации, вызовите setCaching(false). Если вы хотите убедиться, что вся информация читается из файловой системы, используйте stat().

См. также QDir и QFile.

Документация по членам-функциям

[since 6.0] QFileInfo::QFileInfo(const QDir &dir, const std::filesystem::path &file)

Создаёт новый QFileInfo, предоставляющий информацию о заданном file относительно каталога dir.

Если dir имеет относительный путь, QFileInfo также будет иметь относительный путь.

Если file — абсолютный путь, то каталог, указанный dir, будет проигнорирован.

Эта функция была добавлена в Qt 6.0.

[since 6.0] QFileInfo::QFileInfo(const std::filesystem::path &file)

Создаёт новый QFileInfo, предоставляющий информацию о заданном file.

Эта функция была добавлена в Qt 6.0.

См. также setFile(), isRelative(), QDir::setCurrent() и QDir::isRelativePath().

QFileInfo::QFileInfo(const QFileInfo &fileinfo)

Создаёт новый QFileInfo, являющийся копией заданного fileinfo.

QFileInfo::QFileInfo(const QDir &dir, const QString &file)

Создаёт новый QFileInfo, предоставляющий информацию о заданном file относительно каталога dir.

Если dir имеет относительный путь, QFileInfo также будет иметь относительный путь.

Если file — абсолютный путь, то каталог, указанный dir, будет проигнорирован.

См. также isRelative().

QFileInfo::QFileInfo(const QFileDevice &file)

Создаёт новый QFileInfo, предоставляющий информацию о файле file.

Если у file относительный путь, QFileInfo также будет иметь относительный путь.

См. также isRelative().

QFileInfo::QFileInfo(const QString &file)

Создаёт новый QFileInfo, предоставляющий информацию о заданном файле. file может содержать абсолютный или относительный путь.

См. также setFile(), isRelative(), QDir::setCurrent() и QDir::isRelativePath().

QFileInfo::QFileInfo()

Создаёт пустой объект QFileInfo.

Обратите внимание, что пустой объект QFileInfo не содержит ссылки на файл.

См. также setFile().

[since 5.2] QFileInfo &QFileInfo::operator=(QFileInfo &&other)

Перемещает содержимое other в этот объект QFileInfo.

Эта функция была добавлена в Qt 5.2.

QFileInfo &QFileInfo::operator=(const QFileInfo &fileinfo)

Создаёт копию заданного fileinfo и присваивает её этому QFileInfo.

QFileInfo::~QFileInfo()

Удаляет QFileInfo и освобождает его ресурсы.

QDir QFileInfo::absoluteDir() const

Возвращает абсолютный путь к файлу в виде объекта QDir.

См. также dir(), filePath(), fileName() и isRelative().

QString QFileInfo::absoluteFilePath() const

Возвращает абсолютный путь, включая имя файла.

Абсолютный путь состоит из полного пути и имени файла. В Unix он всегда начинается с корневого каталога «/». В Windows он всегда начинается с «D:/», где D — буква диска, за исключением сетевых общих ресурсов, которые не сопоставлены с буквой диска, в этом случае путь начинается с «//sharename/». QFileInfo преобразует буквы дисков в верхний регистр. Обратите внимание, что QDir этого не делает. Приведённый ниже фрагмент кода демонстрирует это.

    QFileInfo fi("c:/temp/foo"); => fi.absoluteFilePath() => "C:/temp/foo"

Эта функция возвращает то же, что и filePath(), за исключением случая, когда isRelative() равно true. В отличие от canonicalFilePath(), символьные ссылки или избыточные элементы «.» или «..» не обязательно удаляются.

Предупреждение: Если filePath() пустое, поведение этой функции не определено.

См. также filePath(), canonicalFilePath() и isRelative().

QString QFileInfo::absolutePath() const

Возвращает абсолютный путь к файлу. Он не включает имя файла.

В Unix абсолютный путь всегда начинается с корневого каталога «/». В Windows он всегда начинается с «D:/», где D — буква диска, за исключением сетевых общих ресурсов, которые не сопоставлены с буквой диска, в этом случае путь начинается с «//sharename/».

В отличие от canonicalPath(), символьные ссылки или избыточные элементы «.» или «..» не обязательно удаляются.

Предупреждение: Если filePath() пустое, поведение этой функции не определено.

См. также absoluteFilePath(), path(), canonicalPath(), fileName() и isRelative().

QString QFileInfo::baseName() const

Возвращает базовое имя файла без пути.

Базовое имя состоит из всех символов в имени файла до (но не включая) первого символа «.».

Пример:

QFileInfo fi("/tmp/archive.tar.gz");
QString base = fi.baseName();  // base = "archive"

Базовое имя файла вычисляется одинаково на всех платформах, независимо от соглашений об именовании файлов (например, «.bashrc» в Unix имеет пустое базовое имя, а суффикс — «bashrc»).

См. также fileName(), suffix(), completeSuffix() и completeBaseName().

[since 5.10] QDateTime QFileInfo::birthTime() const

Возвращает дату и время создания файла.

Если время создания файла недоступно, эта функция возвращает недействительную QDateTime.

Если файл является символической ссылкой, возвращается время целевого файла (а не символической ссылки).

Эта функция была добавлена в Qt 5.10.

См. также lastModified(), lastRead() и metadataChangeTime().

QString QFileInfo::bundleName() const

Возвращает имя пакета.

В macOS и iOS возвращает соответствующее локализованное имя пакета, если путь isBundle(). На всех остальных платформах возвращается пустой QString.

Пример:

QFileInfo fi("/Applications/Safari.app");
QString bundle = fi.bundleName();                // name = "Safari"

См. также isBundle(), filePath(), baseName() и suffix().

bool QFileInfo::caching() const

Возвращает true , если кеширование включено; в противном случае возвращает false.

См. также setCaching() и refresh().

QString QFileInfo::canonicalFilePath() const

Возвращает канонический путь, включая имя файла, т. е. абсолютный путь без символических ссылок или избыточных элементов «.» или «..».

Если файл не существует, canonicalFilePath() возвращает пустую строку.

См. также filePath(), absoluteFilePath() и dir().

QString QFileInfo::canonicalPath() const

Возвращает канонический путь к файлу (исключая имя файла), т.е. абсолютный путь без символических ссылок или избыточных элементов "." или "..".

Если файл не существует, canonicalPath() возвращает пустую строку.

См. также path() и absolutePath().

QString QFileInfo::completeBaseName() const

Возвращает полное имя базы файла без пути.

Полное имя базы состоит из всех символов в имени файла до (но не включая) последнего символа ".".

Пример:

QFileInfo fi("/tmp/archive.tar.gz");
QString base = fi.completeBaseName();  // base = "archive.tar"

См. также fileName(), suffix(), completeSuffix() и baseName().

QString QFileInfo::completeSuffix() const

Возвращает полное расширение (расширение) файла.

Полное расширение состоит из всех символов в имени файла после (но не включая) первого символа ".".

Пример:

QFileInfo fi("/tmp/archive.tar.gz");
QString ext = fi.completeSuffix();  // ext = "tar.gz"

См. также fileName(), suffix(), baseName() и completeBaseName().

QDir QFileInfo::dir() const

Возвращает путь к родительской директории объекта как объект QDir.

Примечание: Возвращаемый объект QDir всегда соответствует родительской директории объекта, даже если QFileInfo представляет директорию.

Для каждого из следующих случаев dir() возвращает QDir "~/examples/191697".

    QFileInfo fileInfo1("~/examples/191697/.");
    QFileInfo fileInfo2("~/examples/191697/..");
    QFileInfo fileInfo3("~/examples/191697/main.cpp");

Для каждого из следующих случаев dir() возвращает QDir ".".

    QFileInfo fileInfo4(".");
    QFileInfo fileInfo5("..");
    QFileInfo fileInfo6("main.cpp");

См. также absolutePath(), filePath(), fileName(), isRelative() и absoluteDir().

bool QFileInfo::exists() const

Возвращает true, если файл существует; в противном случае возвращает false.

Примечание: Если файл является символической ссылкой, указывающей на несуществующий файл, возвращается false.

[static, since 5.2] bool QFileInfo::exists(const QString &file)

Возвращает true, если файл file существует; в противном случае возвращает false.

Примечание: Если file является символической ссылкой, указывающей на несуществующий файл, возвращается false.

Примечание: Использование этой функции быстрее, чем использование QFileInfo(file).exists() для доступа к файловой системе.

Эта функция была добавлена в Qt 5.2.

QString QFileInfo::fileName() const

Возвращает имя файла без пути.

Пример:

QFileInfo fi("/tmp/archive.tar.gz");
QString name = fi.fileName();                // name = "archive.tar.gz"

Обратите внимание, что, если этому объекту QFileInfo задан путь, заканчивающийся слешем, имя файла считается пустым.

См. также isRelative(), filePath(), baseName() и suffix().

QString QFileInfo::filePath() const

Возвращает имя файла, включая путь (который может быть абсолютным или относительным).

См. также absoluteFilePath(), canonicalFilePath() и isRelative().

[since 5.10] QDateTime QFileInfo::fileTime(QFile::FileTime time) const

Возвращает время файла, указанное параметром time. Если время определить невозможно, возвращается недействительная дата и время.

Если файл является символической ссылкой, возвращается время целевого файла (а не символической ссылки).

Эта функция была добавлена в Qt 5.10.

См. также QFile::FileTime и QDateTime::isValid().

[since 6.0] std::filesystem::path QFileInfo::filesystemAbsoluteFilePath() const

Возвращает absoluteFilePath() в виде std::filesystem::path.

Эта функция была добавлена в Qt 6.0.

См. также absoluteFilePath().

[since 6.0] std::filesystem::path QFileInfo::filesystemAbsolutePath() const

Возвращает absolutePath() в виде std::filesystem::path.

Эта функция была добавлена в Qt 6.0.

См. также absolutePath().

[since 6.0] std::filesystem::path QFileInfo::filesystemCanonicalFilePath() const

Возвращает canonicalFilePath() в виде std::filesystem::path.

Эта функция была добавлена в Qt 6.0.

См. также canonicalFilePath().

[since 6.0] std::filesystem::path QFileInfo::filesystemCanonicalPath() const

Возвращает canonicalPath() в виде std::filesystem::path.

Эта функция была добавлена в Qt 6.0.

См. также canonicalPath().

[since 6.0] std::filesystem::path QFileInfo::filesystemFilePath() const

Возвращает filePath() в виде std::filesystem::path.

Эта функция была добавлена в Qt 6.0.

См. также filePath().

[since 6.0] std::filesystem::path QFileInfo::filesystemPath() const

Возвращает path() в виде std::filesystem::path.

Эта функция была добавлена в Qt 6.0.

См. также path().

[since 6.0] std::filesystem::path QFileInfo::filesystemSymLinkTarget() const

Возвращает symLinkTarget() в виде std::filesystem::path.

Эта функция была добавлена в Qt 6.0.

См. также symLinkTarget().

QString QFileInfo::group() const

Возвращает группу файла. В Windows, на системах, где файлы не имеют групп, или при возникновении ошибки, возвращается пустая строка.

Эта функция может быть длительной под Unix (порядка миллисекунд).

Если файл является символической ссылкой, эта функция возвращает группу владельца целевого файла (а не символической ссылки).

См. также groupId(), owner(), и ownerId().

uint QFileInfo::groupId() const

Возвращает идентификатор группы, к которой принадлежит файл.

В Windows и на системах, где файлы не имеют групп, эта функция всегда возвращает (uint)-2.

Если файл является символической ссылкой, эта функция возвращает идентификатор группы владельца целевого файла (а не символической ссылки).

См. также group(), owner(), и ownerId().

bool QFileInfo::isAbsolute() const

Возвращает true если путь к файлу абсолютный, в противном случае возвращает false (т.е. путь относительный).

Примечание: Пути, начинающиеся с двоеточия (:), всегда считаются абсолютными, так как они обозначают QResource.

См. также isRelative().

bool QFileInfo::isBundle() const

Возвращает true если этот объект указывает на пакет или на символическую ссылку на пакет в macOS и iOS; в противном случае возвращает false.

Если файл является символической ссылкой, эта функция возвращает true, если целевой объект является пакетом (а не символической ссылкой).

См. также isDir(), isSymLink(), и isFile().

bool QFileInfo::isDir() const

Возвращает true если этот объект указывает на директорию или на символическую ссылку на директорию; в противном случае возвращает false.

Если файл является символической ссылкой, эта функция возвращает true, если целевой объект является директорией (а не символической ссылкой).

См. также isFile(), isSymLink(), и isBundle().

bool QFileInfo::isExecutable() const

Возвращает true если файл исполняемый; в противном случае возвращает false.

Если файл является символической ссылкой, эта функция возвращает true, если целевой объект исполняемый (а не символическая ссылка).

См. также isReadable(), isWritable(), и permission().

bool QFileInfo::isFile() const

Возвращает true если этот объект указывает на файл или символическую ссылку на файл. Возвращает false если объект указывает на что-то, что не является файлом, например, на директорию.

Если файл является символической ссылкой, эта функция возвращает true, если целевой объект — обычный файл (а не сама ссылка).

См. также isDir(), isSymLink() и isBundle().

bool QFileInfo::isHidden() const

Возвращает true если это скрытый файл; в противном случае возвращает false.

Примечание: Эта функция возвращает true для специальных записей "." и ".." в Unix, даже если QDir::entryList обрабатывает их как показано. Кроме того, поскольку эта функция проверяет имя файла, в Unix она будет проверять имя символической ссылки, если этот файл является символической ссылкой, а не имя целевого объекта.

В Windows эта функция возвращает true если целевой файл скрыт (а не сама ссылка).

[since 5.15] bool QFileInfo::isJunction() const

Возвращает true если объект указывает на жёсткую ссылку; в противном случае возвращает false.

Жёсткие ссылки существуют только в файловой системе NTFS Windows и обычно создаются командой mklink. Их можно рассматривать как символические ссылки для каталогов, и они могут быть созданы только для абсолютных путей на локальном томе.

Эта функция была добавлена в Qt 5.15.

[since 5.0] bool QFileInfo::isNativePath() const

Возвращает true если путь к файлу можно использовать напрямую с нативными API. Возвращает false если файл иначе поддерживается виртуальной файловой системой внутри Qt, например, системой ресурсов Qt.

Примечание: Пути к нативным файлам могут потребовать преобразования разделителей путей и кодировки символов, в зависимости от платформы и требований нативного API.

Эта функция была добавлена в Qt 5.0.

См. также QDir::toNativeSeparators(), QFile::encodeName(), filePath(), absoluteFilePath() и canonicalFilePath().

bool QFileInfo::isReadable() const

Возвращает true если пользователь может читать файл; в противном случае возвращает false.

Если файл является символической ссылкой, эта функция возвращает true, если целевой объект читается (а не сама ссылка).

Примечание: Если проверка разрешений NTFS не включена, результат в Windows будет просто отражать существование файла.

См. также isWritable(), isExecutable() и permission().

bool QFileInfo::isRelative() const

Возвращает true если путь к файлу относительный, в противном случае возвращает false (т.е. путь абсолютный). (Например, в Unix путь абсолютный, если он начинается с "/").

Примечание: Пути, начинающиеся с двоеточия (:), всегда считаются абсолютными, так как они обозначают QResource.

См. также isAbsolute().

bool QFileInfo::isRoot() const

Возвращает true если объект указывает на каталог или символическую ссылку на каталог, и этот каталог является корневым каталогом; в противном случае возвращает false.

bool QFileInfo::isShortcut() const

Возвращает true если этот объект указывает на ярлык; в противном случае возвращает false.

Ярлыки существуют только в Windows и обычно являются файлами .lnk. Например, true будет возвращено для ярлыков (файлов *.lnk в Windows), а false — в Unix (включая macOS и iOS).

Файлы ярлыков (.lnk) обрабатываются как обычные файлы. Открытие таких файлов откроет сам файл .lnk. Для открытия файла, на который ссылается ярлык, необходимо использовать symLinkTarget() на ярлыке.

Примечание: Даже если ярлык (нерабочий ярлык) указывает на несуществующий файл, isShortcut() возвращает true.

См. также isFile(), isDir(), isSymbolicLink() и symLinkTarget().

bool QFileInfo::isSymLink() const

Возвращает true если этот объект указывает на символическую ссылку; в противном случае возвращает false.

Символические ссылки существуют в Unix (включая macOS и iOS) и Windows и обычно создаются командами ln -s или mklink соответственно. Открытие символической ссылки фактически открывает цель ссылки.

Кроме того, для ярлыков (файлы *.lnk ) в Windows будет возвращено значение true. Это поведение устарело и, вероятно, изменится в будущих версиях Qt. Открытие таких файлов откроет сам файл .lnk.

Пример:

QFileInfo info(fileName);
if (info.isSymLink())
    fileName = info.symLinkTarget();

Примечание: Если символическая ссылка указывает на несуществующий файл, exists() возвращает false.

См. также isFile(), isDir() и symLinkTarget().

bool QFileInfo::isSymbolicLink() const

Возвращает true, если этот объект указывает на символическую ссылку; в противном случае возвращает false.

Символические ссылки существуют в Unix (включая macOS и iOS) и Windows (NTFS-ссылка) и обычно создаются с помощью команд ln -s или mklink соответственно.

Unix обрабатывает символические ссылки прозрачно. Открытие символической ссылки фактически открывает целевой файл цели ссылки.

В отличие от isSymLink(), для ярлыков (файлы *.lnk ) в Windows будет возвращено значение false. Используйте QFileInfo::isShortcut() вместо этого.

Примечание: Если символическая ссылка указывает на несуществующий файл, exists() возвращает false.

См. также isFile(), isDir(), isShortcut() и symLinkTarget().

bool QFileInfo::isWritable() const

Возвращает true, если пользователь может записывать в файл; в противном случае возвращает false.

Если файл является символической ссылкой, эта функция возвращает true, если целевой объект разрешает запись (а не сама ссылка).

Примечание: Если проверка разрешений NTFS не включена, результат в Windows будет просто отражать, помечен ли файл как только для чтения.

См. также isReadable(), isExecutable() и permission().

QDateTime QFileInfo::lastModified() const

Возвращает дату и местное время последнего изменения файла.

Если файл является символической ссылкой, возвращается время изменения целевого файла (а не самой ссылки).

См. также birthTime(), lastRead(), metadataChangeTime() и fileTime().

QDateTime QFileInfo::lastRead() const

Возвращает дату и местное время последнего чтения (доступа) к файлу.

На платформах, где эта информация недоступна, возвращает то же значение, что и lastModified().

Если файл является символической ссылкой, возвращается время изменения целевого файла (а не самой ссылки).

См. также birthTime(), lastModified(), metadataChangeTime() и fileTime().

bool QFileInfo::makeAbsolute()

Преобразует путь к файлу в абсолютный путь, если он не находится в таком формате. Возвращает true, чтобы указать, что путь был преобразован; в противном случае возвращает false, чтобы указать, что путь уже был абсолютным.

См. также filePath() и isRelative().

[since 5.10] QDateTime QFileInfo::metadataChangeTime() const

Возвращает дату и время изменения метаданных файла. Изменение метаданных происходит при создании файла, а также при записи или установке информации о узле (например, при изменении разрешений файла).

Если файл является символической ссылкой, возвращается время изменения целевого файла (а не самой ссылки).

Эта функция была добавлена в Qt 5.10.

См. также lastModified() и lastRead().

QString QFileInfo::owner() const

Возвращает владельца файла. На системах, где у файлов нет владельцев, или если произошла ошибка, возвращается пустая строка.

Эта функция может быть длительной при использовании в Unix (порядка миллисекунд). В Windows она вернет пустую строку, если проверка разрешений NTFS не включена.

Если файл является символической ссылкой, эта функция возвращает владельца целевого файла (а не самой ссылки).

См. также ownerId(), group() и groupId().

uint QFileInfo::ownerId() const

Возвращает идентификатор владельца файла.

В Windows и на системах, где у файлов нет владельцев, эта функция возвращает ((uint) -2).

Если файл является символической ссылкой, эта функция возвращает идентификатор владельца целевого файла (а не символической ссылки).

См. также owner(), group() и groupId().

QString QFileInfo::path() const

Возвращает путь к файлу. Он не включает имя файла.

Обратите внимание, что если этому объекту QFileInfo предоставлен путь, заканчивающийся слешем, имя файла считается пустым, и эта функция вернёт весь путь.

См. также filePath(), absolutePath(), canonicalPath(), dir(), fileName() и isRelative().

bool QFileInfo::permission(QFile::Permissions permissions) const

Проверяет права доступа к файлу. Аргумент permissions может содержать несколько флагов типа QFile::Permissions, объединённых операцией ИЛИ для проверки комбинаций прав доступа.

В системах, где файлы не имеют прав, эта функция всегда возвращает true.

Примечание: Результат может быть неточным в Windows, если проверка прав NTFS не включена.

Пример:

QFileInfo fi("/tmp/archive.tar.gz");
if (fi.permission(QFile::WriteUser | QFile::ReadGroup))
    qWarning("I can change the file; my group can read the file");
if (fi.permission(QFile::WriteGroup | QFile::WriteOther))
    qWarning("The group or others can change the file");

Если файл является символической ссылкой, эта функция проверяет права доступа к целевому файлу (а не к символической ссылке).

См. также isReadable(), isWritable() и isExecutable().

QFile::Permissions QFileInfo::permissions() const

Возвращает полную комбинацию QFile::Permissions, объединённую операцией ИЛИ для файла.

Примечание: Результат может быть неточным в Windows, если проверка прав NTFS не включена.

Если файл является символической ссылкой, эта функция возвращает права доступа к целевому файлу (а не к символической ссылке).

void QFileInfo::refresh()

Обновляет информацию о файле, т.е. считывает информацию с файловой системы при следующем обращении к кэшированному свойству.

void QFileInfo::setCaching(bool enable)

Если enable равно true, включает кэширование информации о файле. Если enable равно false, кэширование отключено.

При включённом кэшировании QFileInfo считывает информацию о файле из файловой системы только при первом обращении, но, как правило, не позднее.

Кэширование включено по умолчанию.

См. также refresh() и caching().

void QFileInfo::setFile(const QString &file)

Устанавливает файл, о котором QFileInfo предоставляет информацию, на file.

file также может включать абсолютный или относительный путь к файлу. Абсолютные пути начинаются с разделителя каталога (например, "/" в Unix) или указания диска (в Windows). Относительные имена файлов начинаются с имени каталога или имени файла и указывают путь относительно текущего каталога.

Пример:

QString absolute = "/local/bin";
QString relative = "local/bin";
QFileInfo absFile(absolute);
QFileInfo relFile(relative);

QDir::setCurrent(QDir::rootPath());
// absFile and relFile now point to the same file

QDir::setCurrent("/tmp");
// absFile now points to "/local/bin",
// while relFile points to "/tmp/local/bin"

См. также isFile(), isRelative(), QDir::setCurrent() и QDir::isRelativePath().

void QFileInfo::setFile(const QFileDevice &file)

Это перегруженная функция.

Устанавливает файл, о котором QFileInfo предоставляет информацию, на file.

Если file включает относительный путь, QFileInfo также будет иметь относительный путь.

См. также isRelative().

void QFileInfo::setFile(const QDir &dir, const QString &file)

Это перегруженная функция.

Устанавливает файл, о котором QFileInfo предоставляет информацию, на file в каталоге dir.

Если file включает относительный путь, QFileInfo также будет иметь относительный путь.

См. также isRelative().

[since 6.0] void QFileInfo::setFile(const std::filesystem::path &file)

Устанавливает файл, о котором QFileInfo предоставляет информацию, на file.

Эта функция была добавлена в Qt 6.0.

qint64 QFileInfo::size() const

Возвращает размер файла в байтах. Если файл не существует или не может быть получен, возвращается 0.

Если файл является символической ссылкой, возвращается размер целевого файла (а не символической ссылки).

См. также exists().

[since 6.0] void QFileInfo::stat()

Считывает все атрибуты из файловой системы.

Это полезно, когда информация о файловой системе собирается в потоке обработки, а затем передается в пользовательский интерфейс в виде кэшированных экземпляров QFileInfo.

Эта функция была введена в Qt 6.0.

См. также setCaching() и refresh().

QString QFileInfo::suffix() const

Возвращает суффикс (расширение) файла.

Суффикс состоит из всех символов в имени файла после (но не включая) последней точки «.».

Пример:

QFileInfo fi("/tmp/archive.tar.gz");
QString ext = fi.suffix();  // ext = "gz"

Суффикс файла вычисляется одинаково на всех платформах, независимо от соглашений об именовании файлов (например, ".bashrc" в Unix имеет пустое имя базы, а суффикс — "bashrc").

См. также fileName(), completeSuffix(), baseName() и completeBaseName().

[since 5.0] void QFileInfo::swap(QFileInfo &other)

Меняет местами информацию о файле с other. Эта функция очень быстрая и никогда не терпит неудачу.

Эта функция была введена в Qt 5.0.

QString QFileInfo::symLinkTarget() const

Возвращает абсолютный путь к файлу или каталогу, на который указывает символическая ссылка, или пустую строку, если объект не является символической ссылкой.

Это имя может не представлять существующий файл; это всего лишь строка. QFileInfo::exists() возвращает true , если символическая ссылка указывает на существующий файл.

См. также exists(), isSymLink(), isDir() и isFile().

bool QFileInfo::operator!=(const QFileInfo &fileinfo) const

Возвращает true , если этот объект QFileInfo ссылается на другой файл, чем тот, который указан параметром fileinfo; в противном случае возвращает false.

См. также operator==().

bool QFileInfo::operator==(const QFileInfo &fileinfo) const

Возвращает true , если этот объект QFileInfo ссылается на файл в том же месте, что и fileinfo; в противном случае возвращает false.

Обратите внимание, что результат сравнения двух пустых объектов QFileInfo, не содержащих ссылок на файлы (пути к файлам, которые не существуют или пустые), не определён.

Предупреждение: Это не сравнит две разные символические ссылки, указывающие на один и тот же файл.

Предупреждение: Длинные и короткие имена файлов, которые ссылаются на один и тот же файл в Windows, обрабатываются так, как будто они ссылаются на разные файлы.

См. также operator!=().

Связанные нечлен-функции

QFileInfoList

Синоним для QList<QFileInfo>.

Документация по макросам

[since 6.0] QT_IMPLICIT_QFILEINFO_CONSTRUCTION

Определение этого макроса делает большинство конструкторов QFileInfo неявными вместо явных. Поскольку создание объектов QFileInfo дорого, следует избегать их случайного создания, особенно если существуют более дешевые альтернативы. Например:

QDirIterator it(dir);
while (it.hasNext()) {
    // Implicit conversion from QString (returned by it.next()):
    // may create unnecessary data strucutres and cause additional
    // accesses to the file system. Unless this macro is defined,
    // this line does not compile.

    QFileInfo fi = it.next();

    ~~~
}

Вместо этого используйте правильный API:

QDirIterator it(dir);
while (it.hasNext()) {
    it.next();

    // Extract the QFileInfo from the iterator directly:
    QFileInfo fi = it.fileInfo();

    ~~~
}

Создание из QString, QFile и т.д. всегда возможно, используя прямое инициализирование вместо копирования:

QFileInfo fi1 = some_string; // Does not compile unless this macro is defined
QFileInfo fi2(some_string);  // OK
QFileInfo fi3{some_string};  // Possibly better, avoids the risk of the Most Vexing Parse
auto fi4 = QFileInfo(some_string); // OK

Этот макрос предоставляется для совместимости. Его использование не рекомендуется в новом коде.

Эта функция была введена в Qt 6.0.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qfileinfo.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API