Класс 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 | имя_файла() const |
| QDateTime | время_создания() const |
| QString | имя_пакета() const |
| bool | кеширование() const |
| QString | каноническое_полное_имя_файла() const |
| QString | канонический_путь() const |
| QString | полное_имя_файла() const |
| QString | полное_расширение() const |
| QDir | каталог() const |
| bool | существует() const |
| QString | имя_файла() const |
| QString | путь_к_файлу() const |
| QDateTime | время_файла(QFile::FileTime time) const |
| std::filesystem::path | абсолютный_путь_к_файлу() const |
| std::filesystem::path | абсолютный_путь() const |
| std::filesystem::path | канонический_путь_к_файлу() const |
| std::filesystem::path | канонический_путь() const |
| std::filesystem::path | путь_к_файлу() const |
| std::filesystem::path | путь() const |
| std::filesystem::path | цель_символической_связи() 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 | установить_файл(const std::filesystem::path &file) |
| qint64 | size() 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 в абсолютный путь.
Файл, с которым работает QFileInfo, устанавливается в конструкторе или позже с помощью setFile(). Используйте exists(), чтобы узнать, существует ли файл, и size(), чтобы получить его размер.
Тип файла получается с помощью isFile(), isDir() и isSymLink(). Функция symLinkTarget() возвращает имя файла, на который указывает символическая ссылка.
В 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(), расширения() или полноеРасширение(). Объекты QFileInfo для каталогов, созданных классами Qt, не будут содержать конечный разделитель файла. Если вы хотите использовать конечные разделители в собственных объектах file info, просто добавьте один к имени файла, заданному в конструкторах или 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().
Документация по функциям-членам
[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, если путь относительный.
См. также 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.
Жёсткие ссылки существуют только в файловой системе Windows NTFS и обычно создаются командой mklink. Их можно рассматривать как символические ссылки для каталогов, и они могут быть созданы только для абсолютных путей на локальном томе.
Эта функция была добавлена в Qt 5.15.
[since 5.0] bool QFileInfo::isNativePath() const
Возвращает true если путь к файлу можно использовать напрямую с нативными API. Возвращает false если файл иначе поддерживается виртуальной файловой системой внутри Qt, например, Qt Resource System.
Примечание: Нативные пути все равно могут потребовать преобразования разделителей пути и кодировки символов в зависимости от платформы и требований нативного 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 путь абсолютный, если он начинается с "/").
См. также isAbsolute().
bool QFileInfo::isRoot() const
Возвращает true если объект указывает на каталог или символическую ссылку на каталог, и этот каталог является корневым каталогом; в противном случае возвращает false.
bool QFileInfo::isShortcut() const
Возвращает true если этот объект указывает на ярлык; в противном случае возвращает false.
Ярлыки существуют только в Windows и обычно являются файлами .lnk. Например, true будет возвращено для ярлыков (файлов *.lnk в Windows), но false — в Unix (включая macOS и iOS).
Файлы ярлыков (.lnk) обрабатываются как обычные файлы. Открытие таких файлов откроет сам файл, на который ссылается ярлык. Для открытия файла, на который ссылается ярлык, необходимо использовать symLinkTarget() для ярлыка.
Примечание: Даже если ярлык (нерабочий ярлык) указывает на несуществующий файл, isShortcut() возвращает true.
См. также isFile(), isDir(), isSymbolicLink(), и symLinkTarget().
bool QFileInfo::isSymLink() const
Возвращает true если этот объект указывает на символическую ссылку; в противном случае возвращает false.
Символические ссылки существуют в Unix (включая macOS и iOS) и Windows (NTFS-символическая ссылка) и обычно создаются командами ln -s или mklink соответственно. Открытие символической ссылки фактически открывает цель ссылки.
Кроме того, true будет возвращено для ярлыков (файлов *.lnk в Windows). Это поведение устарело и, вероятно, изменится в будущих версиях 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(), false будет возвращено для ярлыков (файлов *.lnk в Windows). Используйте 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().
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().
void QFileInfo::setFile(const std::filesystem::path &file)
Устанавливает файл, о котором QFileInfo предоставляет информацию, в file.
Функция была добавлена в Qt 6.0.
qint64 QFileInfo::size() const
Возвращает размер файла в байтах. Если файл не существует или не может быть получен, возвращается 0.
Если файл является символической ссылкой, возвращается размер целевого файла (а не ссылки).
См. также exists().
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().
END_OF_DOCUMENT_MARKER
[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!=().
Документация макросов
[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.0/qfileinfo.html