Класс 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 | filesystemJunctionTarget() const |
| std::filesystem::path | filesystemPath() const |
| std::filesystem::path | filesystemSymLinkTarget() const |
| QString | group() const |
| uint | groupId() const |
| bool | isAbsolute() const |
| bool | isBundle() const |
| bool | isDir() const |
| bool | isExecutable() const |
| bool | isFile() const |
| bool | isHidden() const |
| bool | isJunction() const |
| bool | isNativePath() const |
| bool | isReadable() const |
| bool | isRelative() const |
| bool | isRoot() const |
| bool | isShortcut() const |
| bool | isSymLink() const |
| bool | isSymbolicLink() const |
| bool | isWritable() const |
| QString | junctionTarget() const |
| QDateTime | lastModified() const |
| QDateTime | lastRead() const |
| bool | makeAbsolute() |
| QDateTime | metadataChangeTime() const |
| QString | owner() const |
| uint | ownerId() const |
| QString | path() const |
| bool | permission(QFile::Permissions permissions) const |
| QFile::Permissions | permissions() const |
| void | refresh() |
| void | setCaching(bool enable) |
| void | setFile(const QString &file) |
| void | setFile(const QFileDevice &file) |
| void | setFile(const QDir &dir, const QString &file) |
| void | setFile(const std::filesystem::path &file) |
| qint64 | size() const |
| void | stat() |
| QString | suffix() const |
| void | swap(QFileInfo &other) |
| QString | symLinkTarget() const |
| bool | operator!=(const QFileInfo &fileinfo) const |
| bool | operator==(const QFileInfo &fileinfo) const |
Статические публичные члены
| bool | exists(const QString &file) |
Связанные нечлены
| QFileInfoList |
Макросы
| QT_IMPLICIT_QFILEINFO_CONSTRUCTION |
Подробное описание
QFileInfo предоставляет информацию о имени и расположении файла (пути) в файловой системе, его правах доступа и является ли он каталогом или символической ссылкой и т. д. Также доступны размер файла и время последнего изменения/чтения. QFileInfo также может использоваться для получения информации о Qt ресурсе.
QFileInfo может указывать на файл с относительным или абсолютным путем к файлу. Абсолютные пути к файлам начинаются с разделителя каталога "/" (или с указания диска в Windows). Относительные имена файлов начинаются с имени каталога или имени файла и указывают путь относительно текущего рабочего каталога. Пример абсолютного пути — строка "/tmp/quartz". Относительный путь может выглядеть как "src/fatlib". Вы можете использовать функцию isRelative(), чтобы проверить, использует ли QFileInfo относительный или абсолютный путь к файлу. Вы можете вызвать функцию makeAbsolute(), чтобы преобразовать относительный путь QFileInfo в абсолютный путь.
Примечание: Пути, начинающиеся с двоеточия (:), всегда считаются абсолютными, так как они обозначают QResource.
Файл, на который ссылается 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(), suffix() или completeSuffix(). Объекты 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.2] std::filesystem::path QFileInfo::filesystemJunctionTarget() const
Возвращает junctionTarget() в виде std::filesystem::path.
Эта функция была добавлена в Qt 6.2.
См. также junctionTarget().
[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().
[since 6.2] QString QFileInfo::junctionTarget() const
Разрешает NTFS-соединение до пути, на который оно ссылается.
Возвращает абсолютный путь к каталогу, на который указывает NTFS-соединение, или пустую строку, если объект не является NTFS-соединением.
Нет гарантии, что каталог, указанный NTFS-соединением, фактически существует.
Эта функция была добавлена в Qt 6.2.
См. также isJunction(), isFile(), isDir(), isSymLink(), isSymbolicLink() и isShortcut().
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, объединенными оператором OR для проверки комбинаций разрешений.
На системах, где файлы не имеют разрешений, эта функция всегда возвращает 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). Относительные имена файлов начинаются с имени каталога или имени файла и указывают путь относительно текущего каталога.
Пример:
QFileInfo info("/usr/bin/env");
QString path = info.absolutePath(); // path = /usr/bin
QString base = info.baseName(); // base = env
info.setFile("/etc/hosts");
path = info.absolutePath(); // path = /etc
base = info.baseName(); // base = hosts См. также isFile(), isRelative(), QDir::setCurrent() и QDir::isRelativePath().
void QFileInfo::setFile(const QFileDevice &file)
Это перегруженная функция.
Устанавливает файл, о котором QFileInfo предоставляет информацию, в file.
Если file включает относительный путь, у QFileInfo также будет относительный путь.
См. также isRelative().
END_OF_DOCUMENT_MARKERvoid 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!=().
Документация макроса
[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 structures 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.2/qfileinfo.html