Класс QDir
Класс QDir предоставляет доступ к структурам каталогов и их содержимому. Подробнее...
| Заголовок: | #include <QDir> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются реентерабельными.
Публичные типы
| перечисление | Filter { Каталоги, ВсеКаталоги, Файлы, Диски, БезСимволическихСсылок, …, СчувствительностьюКРегистру } |
| флаги | Filters |
| перечисление | SortFlag { Имя, Время, Размер, Тип, НеОтсортировано, …, СУчётЛокали } |
| флаги | SortFlags |
Публичные функции
| QDir(const std::filesystem::path &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries) | |
| QDir(const std::filesystem::path &path) | |
| QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries) | |
| QDir(const QString &path = QString()) | |
| QDir(const QDir &dir) | |
| QDir & | operator=(QDir &&other) |
| QDir & | operator=(const QDir &dir) |
| ~QDir() | |
| QString | absoluteFilePath(const QString &fileName) const |
| QString | absolutePath() const |
| QString | canonicalPath() const |
| bool | cd(const QString &dirName) |
| bool | cdUp() |
| uint | count() const |
| QString | dirName() const |
| QFileInfoList | entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const |
| QFileInfoList | entryInfoList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const |
| QStringList | entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const |
| QStringList | entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const |
| bool | exists(const QString &name) const |
| bool | exists() const |
| QString | filePath(const QString &fileName) const |
| std::filesystem::path | filesystemAbsolutePath() const |
| std::filesystem::path | filesystemCanonicalPath() const |
| std::filesystem::path | filesystemPath() const |
| QDir::Filters | filter() const |
| bool | isAbsolute() const |
| bool | isEmpty(QDir::Filters filters = Filters(AllEntries | NoDotAndDotDot)) const |
| bool | isReadable() const |
| bool | isRelative() const |
| bool | isRoot() const |
| bool | makeAbsolute() |
| bool | mkdir(const QString &dirName) const |
| bool | mkpath(const QString &dirPath) const |
| QStringList | nameFilters() const |
| QString | path() const |
| void | refresh() const |
| QString | relativeFilePath(const QString &fileName) const |
| bool | remove(const QString &fileName) |
| bool | removeRecursively() |
| bool | rename(const QString &oldName, const QString &newName) |
| bool | rmdir(const QString &dirName) const |
| bool | rmpath(const QString &dirPath) const |
| void | setFilter(QDir::Filters filters) |
| void | setNameFilters(const QStringList &nameFilters) |
| void | setPath(const QString &path) |
| void | setPath(const std::filesystem::path &path) |
| void | setSorting(QDir::SortFlags sort) |
| QDir::SortFlags | sorting() const |
| void | swap(QDir &other) |
| bool | operator!=(const QDir &dir) const |
| bool | operator==(const QDir &dir) const |
| QString | operator[](int pos) const |
Статические публичные члены
| void | addSearchPath(const QString &prefix, const QString &path) |
| void | addSearchPath(const QString &prefix, const std::filesystem::path &path) |
| QString | cleanPath(const QString &path) |
| QDir | current() |
| QString | currentPath() |
| QFileInfoList | drives() |
| QString | fromNativeSeparators(const QString &pathName) |
| QDir | home() |
| QString | homePath() |
| bool | isAbsolutePath(const QString &path) |
| bool | isRelativePath(const QString &path) |
| QChar | listSeparator() |
| bool | match(const QString &filter, const QString &fileName) |
| bool | match(const QStringList &filters, const QString &fileName) |
| QDir | root() |
| QString | rootPath() |
| QStringList | searchPaths(const QString &prefix) |
| QChar | separator() |
| bool | setCurrent(const QString &path) |
| void | setSearchPaths(const QString &prefix, const QStringList &searchPaths) |
| QDir | temp() |
| QString | tempPath() |
| QString | toNativeSeparators(const QString &pathName) |
Макросы
| void | Q_CLEANUP_RESOURCE(name) |
| void | Q_INIT_RESOURCE(name) |
Подробное описание
Класс QDir используется для управления именами путей, доступа к информации о путях и файлах и управления файловой системой. Также его можно использовать для доступа к системе ресурсов Qt.
Qt использует "/" в качестве универсального разделителя каталогов аналогично тому, как "/" используется в качестве разделителя пути в URL-адресах. Если вы всегда используете "/" в качестве разделителя каталога, Qt будет преобразовывать ваши пути в соответствии с операционной системой.
QDir может указывать на файл с помощью относительного или абсолютного пути. Абсолютные пути начинаются с разделителя каталога (дополнительно с указанием диска в Windows). Относительные имена файлов начинаются с имени каталога или имени файла и определяют путь относительно текущего каталога.
Примеры абсолютных путей:
QDir("/home/user/Documents")
QDir("C:/Documents and Settings") В Windows второй пример выше будет преобразован в C:\Documents and Settings при использовании для доступа к файлам.
Примеры относительных путей:
QDir("images/landscape.png") Вы можете использовать функции isRelative() или isAbsolute() для проверки использования QDir относительного или абсолютного пути к файлу. Вызовите makeAbsolute() для преобразования относительного QDir в абсолютный.
Примечание: Пути, начинающиеся с двоеточия (:), всегда считаются абсолютными, поскольку они обозначают QResource.
Навигация и операции с каталогами
Путь к каталогу можно получить с помощью функции path(), а новый путь установить с помощью функции setPath(). Абсолютный путь к каталогу находится путем вызова absolutePath().
Имя каталога находится с помощью функции dirName(). Как правило, она возвращает последний элемент в абсолютном пути, определяющем местоположение каталога. Однако она также может возвращать "." если QDir представляет текущий каталог.
QDir("Documents/Letters/Applications").dirName() // "Applications"
QDir().dirName() // "." Путь каталога также можно изменить с помощью функций cd() и cdUp(), обе из которых работают как знакомые командные оболочки. Когда cd() вызывается с именем существующего каталога, объект QDir изменяет каталог так, чтобы он представлял этот каталог вместо текущего. Функция cdUp() изменяет каталог объекта QDir таким образом, чтобы он ссылался на родительский каталог; т.е. cd("..") эквивалентно cdUp().
Каталоги можно создавать с помощью mkdir(), переименовывать с помощью rename() и удалять с помощью rmdir().
Можно проверить наличие каталога с заданным именем, используя exists(), а свойства каталога можно проверить с помощью isReadable(), isAbsolute(), isRelative() и isRoot().
Функция refresh() повторно считывает данные каталога с диска.
Файлы и содержимое каталогов
Каталоги содержат ряд записей, представляющих файлы, каталоги и символические ссылки. Количество записей в каталоге возвращается функцией count(). Список строк имен всех записей в каталоге можно получить с помощью entryList(). Если вам нужна информация о каждой записи, используйте entryInfoList() для получения списка объектов QFileInfo.
Пути к файлам и каталогам внутри каталога можно создавать с помощью filePath() и absoluteFilePath(). Функция filePath() возвращает путь к указанному файлу или каталогу относительно пути объекта QDir; absoluteFilePath() возвращает абсолютный путь к указанному файлу или каталогу. Ни одна из этих функций не проверяет существование файлов или каталогов; они только строят пути.
QDir directory("Documents/Letters");
QString path = directory.filePath("contents.txt");
QString absolutePath = directory.absoluteFilePath("contents.txt"); Файлы можно удалить, используя функцию remove(). Каталоги не могут быть удалены так же, как файлы; для их удаления используйте rmdir().
Можно уменьшить количество записей, возвращаемых entryList() и entryInfoList(), применяя фильтры к объекту QDir. Вы можете применить фильтр имен, чтобы указать шаблон с подстановочными знаками, которым должны соответствовать имена файлов, атрибутный фильтр, который выбирает свойства записей и может различать файлы и каталоги, и порядок сортировки.
Фильтры имен — это списки строк, которые передаются в setNameFilters(). Атрибутные фильтры состоят из побитового ИЛИ комбинации фильтров, и они задаются при вызове setFilter(). Порядок сортировки задается с помощью setSorting() с побитовой ИЛИ комбинацией SortFlags.
Вы можете проверить, соответствует ли имя файла фильтру, используя функцию match().
Флаги фильтра и порядка сортировки также могут быть заданы при вызове entryList() и entryInfoList() для переопределения ранее определенного поведения.
Текущий каталог и другие специальные пути
Доступ к некоторым общим каталогам предоставляется рядом статических функций, которые возвращают объекты QDir. Также существуют соответствующие функции, возвращающие строки:
| QDir | QString | Возвращаемое значение |
|---|---|---|
| current() | currentPath() | Рабочий каталог приложения |
| home() | homePath() | Домашний каталог пользователя |
| root() | rootPath() | Корневой каталог |
| temp() | tempPath() | Временный каталог системы |
Статическую функцию setCurrent() также можно использовать для установки рабочего каталога приложения.
Если вам нужно найти каталог, содержащий исполняемый файл приложения, см. QCoreApplication::applicationDirPath().
END_OF_DOCUMENT_MARKERСтатический метод drives() возвращает список корневых каталогов для каждого устройства, содержащего файловую систему. В системах Unix это возвращает список, содержащий единственный корневой каталог "/"; в Windows список обычно содержит C:/, а также, возможно, другие буквы дисков, такие как D:/, в зависимости от конфигурации системы пользователя.
Обработка путей и строки
Пути, содержащие элементы ".", которые ссылаются на текущую директорию в этом месте пути, элементы ".." — на родительскую директорию, и символьные ссылки могут быть приведены к канонической форме с помощью функции canonicalPath().
Пути также могут быть упрощены с помощью функции cleanPath() для удаления избыточных элементов "/" и "..".
Иногда необходимо отобразить путь в представлении по умолчанию для платформы пользователя. Статическая функция toNativeSeparators() возвращает копию указанного пути, в котором каждый разделитель каталога заменён соответствующим разделителем для основной операционной системы.
Примеры
Проверка существования каталога:
QDir dir("example");
if (!dir.exists())
qWarning("Cannot find the example directory"); (Мы также можем использовать статическую вспомогательную функцию QFile::exists().)
Перебор каталогов и чтение файла:
QDir dir = QDir::root(); // "/"
if (!dir.cd("tmp")) { // "/tmp"
qWarning("Cannot find the \"/tmp\" directory");
} else {
QFile file(dir.filePath("ex1.txt")); // "/tmp/ex1.txt"
if (!file.open(QIODevice::ReadWrite))
qWarning("Cannot create the file %s", file.name());
} Программа, которая выводит список всех файлов в текущей директории (исключая символические ссылки), отсортированные по размеру, от меньшего к большему:
#include <QDir>
#include <iostream>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QDir dir;
dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
dir.setSorting(QDir::Size | QDir::Reversed);
QFileInfoList list = dir.entryInfoList();
std::cout << " Bytes Filename" << std::endl;
for (int i = 0; i < list.size(); ++i) {
QFileInfo fileInfo = list.at(i);
std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10)
.arg(fileInfo.fileName()));
std::cout << std::endl;
}
return 0;
} См. также QFileInfo, QFile, QFileDialog, QCoreApplication::applicationDirPath() и Пример поиска файлов.
Документация типов членов
перечисление QDir::Filterфлаги QDir::Filters
Это перечисление описывает доступные параметры фильтрации для QDir; например, для entryList() и entryInfoList(). Значение фильтра задаётся путём объединения значений из следующего списка с помощью побитового оператора ИЛИ:
| Константа | Значение | Описание |
|---|---|---|
QDir::Dirs |
0x001 |
Список каталогов, соответствующих фильтрам. |
QDir::AllDirs |
0x400 |
Список всех каталогов; т.е. фильтры не применяются к именам каталогов. |
QDir::Files |
0x002 |
Список файлов. |
QDir::Drives |
0x004 |
Список дисков (игнорируется в Unix). |
QDir::NoSymLinks |
0x008 |
Не отображать символические ссылки (игнорируется операционными системами, которые не поддерживают символические ссылки). |
QDir::NoDotAndDotDot |
NoDot | NoDotDot |
Не отображать специальные записи "." и "..". |
QDir::NoDot |
0x2000 |
Не отображать специальную запись ".". |
QDir::NoDotDot |
0x4000 |
Не отображать специальную запись "..". |
QDir::AllEntries |
Dirs | Files | Drives |
Список каталогов, файлов, дисков и символических ссылок (это не отображает сломанные символические ссылки, если не указано System). |
QDir::Readable |
0x010 |
Список файлов, для которых приложение имеет доступ для чтения. Значение Readable необходимо комбинировать с Dirs или Files. |
QDir::Writable |
0x020 |
Список файлов, для которых приложение имеет доступ для записи. Значение Writable необходимо комбинировать с Dirs или Files. |
QDir::Executable |
0x040 |
Список файлов, для которых приложение имеет доступ для выполнения. Значение Executable необходимо комбинировать с Dirs или Files. |
QDir::Modified |
0x080 |
Отображать только файлы, которые были изменены (игнорируется в Unix). |
QDir::Hidden |
0x100 |
Отображать скрытые файлы (в Unix, файлы, начинающиеся с "."). |
QDir::System |
0x200 |
Отображать системные файлы (в Unix, включаются FIFO, сокеты и файлы устройств; в Windows, включаются файлы .lnk). |
QDir::CaseSensitive |
0x800 |
Фильтр должен быть чувствителен к регистру. |
Функции, использующие значения перечисления Filter для фильтрации списков файлов и каталогов, будут включать символические ссылки на файлы и каталоги, если вы не установите значение NoSymLinks.
По умолчанию QDir не будет фильтровать файлы на основе их разрешений, поэтому entryList() и entryInfoList() вернут все файлы, которые являются читаемыми, записываемыми, исполняемыми или любой комбинацией этих трёх свойств. Это делает стандартный вариант лёгким для написания и одновременно полезным.
Например, установка флагов Readable, Writable, и Files позволяет отобразить все файлы, к которым приложение имеет доступ на чтение, запись или оба типа доступа. Если в эту комбинацию также включены флаги Dirs и Drives, то можно отобразить все диски, каталоги, все файлы, к которым приложение имеет доступ на чтение, запись или выполнение, а также символические ссылки на такие файлы/каталоги.
Чтобы получить разрешения для каталога, используйте функцию entryInfoList() для получения связанных объектов QFileInfo, а затем используйте QFileInfo::permissons() для получения разрешений и владельца каждого файла.
Тип Filters является псевдонимом для QFlags<Filter>. Он хранит комбинацию значений Filter, объединённых по оператору ИЛИ.
перечисление QDir::SortFlagфлаги QDir::SortFlags
Это перечисление описывает доступные параметры сортировки для QDir, например, для entryList() и entryInfoList(). Значение сортировки задаётся путём объединения значений из следующего списка с помощью оператора ИЛИ:
| Константа | Значение | Описание |
|---|---|---|
QDir::Name |
0x00 |
Сортировка по имени. |
QDir::Time |
0x01 |
Сортировка по времени (времени последней модификации). |
QDir::Size |
0x02 |
Сортировка по размеру файла. |
QDir::Type |
0x80 |
Сортировка по типу файла (расширению). |
QDir::Unsorted |
0x03 |
Не сортировать. |
QDir::NoSort |
-1 |
По умолчанию не сортируется. |
QDir::DirsFirst |
0x04 |
Сначала каталоги, затем файлы. |
QDir::DirsLast |
0x20 |
Сначала файлы, затем каталоги. |
QDir::Reversed |
0x08 |
Перевернуть порядок сортировки. |
QDir::IgnoreCase |
0x10 |
Сортировка без учёта регистра. |
QDir::LocaleAware |
0x40 |
Сортировка с учётом текущих настроек локали. |
Можно указать только один из первых четырёх параметров.
Если вы указываете оба DirsFirst и Reversed, каталоги всё равно будут выводиться первыми, но в обратном порядке; файлы будут выводиться после каталогов, также в обратном порядке.
Тип SortFlags является псевдонимом для QFlags<SortFlag>. Он хранит комбинацию значений SortFlag, объединённых по оператору ИЛИ.
Документация функций членов
[since 6.0] QDir::QDir(const std::filesystem::path &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)
Создаёт QDir с путём path, который фильтрует свои элементы по имени с помощью nameFilter и по атрибутам с помощью filters. Также сортирует имена с помощью sort.
По умолчанию nameFilter — пустая строка, что ничего не исключает; по умолчанию filters — AllEntries, что также ничего не исключает. По умолчанию sort — Name | IgnoreCase, т.е. сортировка по имени без учёта регистра.
Если path пустая, QDir использует "." (текущую директорию). Если nameFilter пустая строка, QDir использует фильтр имени "*" (все файлы).
Примечание: path не обязательно должен существовать.
Эта функция была добавлена в Qt 6.0.
См. также exists(), setPath(), setNameFilters(), setFilter() и setSorting().
[since 6.0] QDir::QDir(const std::filesystem::path &path)
Создает объект QDir, указывающий на заданный каталог path. Если path пустая, используется рабочая директория программы (".").
Эта функция была добавлена в Qt 6.0.
См. также currentPath().
QDir::QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)
Создает объект QDir с путем path, фильтрующий свои записи по имени с помощью nameFilter и по атрибутам с помощью filters. Также сортирует имена с помощью sort.
По умолчанию nameFilter — пустая строка, что ничего не исключает; по умолчанию filters — AllEntries, что также ничего не исключает. По умолчанию sort — Name | IgnoreCase, т.е. сортировка по имени без учета регистра.
Если path пустая строка, QDir использует "." (текущую директорию). Если nameFilter пустая строка, QDir использует фильтр имени "*" (все файлы).
Примечание: path не обязательно должен существовать.
См. также exists(), setPath(), setNameFilters(), setFilter(), и setSorting().
QDir::QDir(const QString &path = QString())
Создает объект QDir, указывающий на заданный каталог path. Если path пустая, используется рабочая директория программы (".").
См. также currentPath().
QDir::QDir(const QDir &dir)
Создает объект QDir, являющийся копией объекта QDir для каталога dir.
См. также operator=().
[since 5.2] QDir &QDir::operator=(QDir &&other)
Перемещает other в этот экземпляр QDir.
Эта функция была добавлена в Qt 5.2.
QDir &QDir::operator=(const QDir &dir)
Создает копию объекта dir и присваивает её этому объекту QDir.
QDir::~QDir()
Уничтожает объект QDir, освобождая его ресурсы. Это не влияет на подлежащий каталог в файловой системе.
QString QDir::absoluteFilePath(const QString &fileName) const
Возвращает абсолютный путь к файлу в каталоге. Не проверяет, действительно ли файл существует в каталоге; но см. exists(). Избыточные последовательные разделители или каталоги "." и ".." в fileName не удаляются (см. cleanPath()).
См. также relativeFilePath(), filePath(), и canonicalPath().
QString QDir::absolutePath() const
Возвращает абсолютный путь (путь, начинающийся с "/" или с указания диска), который может содержать символические ссылки, но никогда не содержит избыточные ".", ".." или несколько разделителей.
См. также setPath(), canonicalPath(), exists(), cleanPath(), dirName(), и absoluteFilePath().
[static] void QDir::addSearchPath(const QString &prefix, const QString &path)
Добавляет path в путь поиска для prefix.
См. также setSearchPaths().
[static, since 6.0] void QDir::addSearchPath(const QString &prefix, const std::filesystem::path &path)
Это перегруженная функция.
Эта функция была добавлена в Qt 6.0.
QString QDir::canonicalPath() const
Возвращает канонический путь, т.е. путь без символических ссылок или избыточных элементов "." или "..".
В системах, где нет символических ссылок, эта функция всегда возвращает ту же строку, что и absolutePath(). Если канонический путь не существует (обычно из-за висящих символических ссылок), canonicalPath() возвращает пустую строку.
Пример:
QString bin = "/local/bin"; // where /local/bin is a symlink to /usr/bin QDir binDir(bin); QString canonicalBin = binDir.canonicalPath(); // canonicalBin now equals "/usr/bin" QString ls = "/local/bin/ls"; // where ls is the executable "ls" QDir lsDir(ls); QString canonicalLs = lsDir.canonicalPath(); // canonicalLS now equals "/usr/bin/ls".
См. также path(), absolutePath(), exists(), cleanPath(), dirName(), и absoluteFilePath().
bool QDir::cd(const QString &dirName)
Изменяет каталог QDir на dirName.
Возвращает true если новый каталог существует; в противном случае возвращает false. Обратите внимание, что логическая операция cd() не выполняется, если новый каталог не существует.
Вызов cd("..") эквивалентен вызову cdUp().
См. также cdUp(), isReadable(), exists(), и path().
bool QDir::cdUp()
Изменяет каталог, переходя на один уровень вверх от текущего каталога QDir.
Возвращает true если новый каталог существует; в противном случае возвращает false. Обратите внимание, что логическая операция cdUp() не выполняется, если новый каталог не существует.
См. также cd(), isReadable(), exists(), и path().
[static] QString QDir::cleanPath(const QString &path)
Возвращает path с нормализованными разделителями каталогов (т.е., платформенно-ориентированные разделители преобразуются в "/") и удалёнными избыточными, и решёнными "." и "..".
Символические ссылки сохраняются. Эта функция не возвращает канонический путь, а скорее простейшую версию входных данных. Например, "./local" становится "local", "local/../bin" становится "bin" и "/local/usr/../bin" становится "/local/bin".
См. также absolutePath() и canonicalPath().
uint QDir::count() const
Возвращает общее количество каталогов и файлов в каталоге.
Эквивалентно entryList().count().
См. также operator[]() и entryList().
[static] QDir QDir::current()
Возвращает текущий каталог приложения.
Каталог создается с использованием абсолютного пути текущего каталога, гарантируя, что его path() будет таким же, как его absolutePath().
См. также currentPath(), setCurrent(), home(), root(), и temp().
[static] QString QDir::currentPath()
Возвращает абсолютный путь текущего каталога приложения. Текущий каталог — это последний каталог, установленный с помощью QDir::setCurrent(), или, если это никогда не вызывалось, каталог, в котором это приложение было запущено родительским процессом.
См. также current(), setCurrent(), homePath(), rootPath(), tempPath(), и QCoreApplication::applicationDirPath().
QString QDir::dirName() const
Возвращает имя каталога; это не то же самое, что и путь, например, каталог с именем "mail" может иметь путь "/var/spool/mail". Если у каталога нет имени (например, это корневой каталог), возвращается пустая строка.
Проверка на то, что каталог с таким именем действительно существует, не выполняется; но см. exists().
См. также path(), filePath(), absolutePath(), и absoluteFilePath().
[static] QFileInfoList QDir::drives()
Возвращает список корневых каталогов в этой системе.
В Windows это возвращает список объектов QFileInfo, содержащих "C:/", "D:/" и т.д. В других операционных системах возвращает список, содержащий только один корневой каталог (т.е. "/").
См. также root() и rootPath().
END_OF_DOCUMENT_MARKERQFileInfoList QDir::entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
Возвращает список объектов QFileInfo для всех файлов и каталогов в каталоге, отсортированных по имени и атрибутам, предварительно заданным с помощью setNameFilters() и setFilter(), и отсортированных в соответствии с флагами, заданными с помощью setSorting().
Фильтр имен, фильтр атрибутов файлов и сортировка могут быть переопределены с помощью аргументов nameFilters, filters и sort.
Возвращает пустой список, если каталог недоступен для чтения, не существует или если ничего не соответствует заданным параметрам.
См. также entryList(), setNameFilters(), setSorting(), setFilter(), isReadable() и exists().
QFileInfoList QDir::entryInfoList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
Это перегруженный метод.
Возвращает список объектов QFileInfo для всех файлов и каталогов в каталоге, отсортированных по имени и атрибутам, предварительно заданным с помощью setNameFilters() и setFilter(), и отсортированных в соответствии с флагами, заданными с помощью setSorting().
Фильтр атрибутов и сортировка могут быть переопределены с помощью аргументов filters и sort.
Возвращает пустой список, если каталог недоступен для чтения, не существует или если ничего не соответствует заданным параметрам.
См. также entryList(), setNameFilters(), setSorting(), setFilter(), isReadable() и exists().
QStringList QDir::entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
Возвращает список имен всех файлов и каталогов в каталоге, отсортированных по имени и атрибутам, предварительно заданным с помощью setNameFilters() и setFilter(), и отсортированных в соответствии с флагами, заданными с помощью setSorting().
Фильтр имен, фильтр атрибутов файлов и сортировка могут быть переопределены с помощью аргументов nameFilters, filters и sort.
Возвращает пустой список, если каталог недоступен для чтения, не существует или если ничего не соответствует заданным параметрам.
См. также entryInfoList(), setNameFilters(), setSorting() и setFilter().
QStringList QDir::entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
Это перегруженный метод.
Возвращает список имен всех файлов и каталогов в каталоге, отсортированных по имени и атрибутам, предварительно заданным с помощью setNameFilters() и setFilter(), и отсортированных в соответствии с флагами, заданными с помощью setSorting().
Фильтр атрибутов и сортировка могут быть переопределены с помощью аргументов filters и sort.
Возвращает пустой список, если каталог недоступен для чтения, не существует или если ничего не соответствует заданным параметрам.
Примечание: Чтобы перечислить символические ссылки, указывающие на несуществующие файлы, необходимо передать System в фильтр.
См. также entryInfoList(), setNameFilters(), setSorting() и setFilter().
bool QDir::exists(const QString &name) const
Возвращает true если файл с именем name существует; в противном случае возвращает false.
Если name не содержит абсолютный путь к файлу, имя файла предполагается относительным к самому каталогу, поэтому эта функция обычно используется для проверки наличия файлов внутри каталога.
См. также QFileInfo::exists() и QFile::exists().
bool QDir::exists() const
Это перегруженный метод.
Возвращает true если каталог существует; в противном случае возвращает false. (Если найден файл с таким же именем, эта функция вернет false).
Перегрузка этой функции с аргументом используется для проверки наличия файлов и каталогов внутри каталога.
См. также QFileInfo::exists() и QFile::exists().
QString QDir::filePath(const QString &fileName) const
Возвращает путь к файлу в каталоге. Не проверяет, существует ли файл в каталоге; но см. exists(). Если каталог относительный, возвращаемый путь также будет относительным. Избыточные множественные разделители или каталоги "." и ".." в fileName не удаляются (см. cleanPath()).
См. также dirName(), absoluteFilePath(), isRelative() и canonicalPath().
[since 6.0] std::filesystem::path QDir::filesystemAbsolutePath() const
Возвращает absolutePath() в формате std::filesystem::path.
Данная функция была добавлена в Qt 6.0.
См. также absolutePath().
[since 6.0] std::filesystem::path QDir::filesystemCanonicalPath() const
Возвращает canonicalPath() в формате std::filesystem::path.
Данная функция была добавлена в Qt 6.0.
См. также canonicalPath().
[since 6.0] std::filesystem::path QDir::filesystemPath() const
Возвращает path() в формате std::filesystem::path.
Данная функция была добавлена в Qt 6.0.
См. также path().
QDir::Filters QDir::filter() const
Возвращает значение, установленное функцией setFilter().
См. также setFilter().
[static] QString QDir::fromNativeSeparators(const QString &pathName)
Возвращает pathName, используя '/' в качестве разделителя файлов. Например, на Windows, fromNativeSeparators("c:\\winnt\\system32") вернёт "c:/winnt/system32".
Возвращаемая строка может быть такой же, как аргумент, на некоторых операционных системах, например, на Unix.
См. также toNativeSeparators() и separator().
[static] QDir QDir::home()
Возвращает домашний каталог пользователя.
Каталог строится с использованием абсолютного пути к домашнему каталогу, гарантируя, что его path() будет таким же, как и его absolutePath().
См. homePath() для получения подробностей.
См. также drives(), current(), root() и temp().
[static] QString QDir::homePath()
Возвращает абсолютный путь к домашнему каталогу пользователя.
В Windows эта функция вернёт каталог профиля текущего пользователя. Обычно это:
C:/Documents and Settings/Username
Используйте функцию toNativeSeparators() для преобразования разделителей в соответствующие разделители для операционной системы.
Если каталог профиля текущего пользователя не существует или не может быть получен, будут проверены следующие альтернативы (в указанном порядке) до тех пор, пока не будет найден существующий и доступный путь:
- Путь, указанный в переменной среды
USERPROFILE. - Путь, образованный конкатенацией переменных среды
HOMEDRIVEиHOMEPATH. - Путь, указанный в переменной среды
HOME. - Путь, возвращаемый функцией rootPath() (которая использует переменную среды
SystemDrive). - Каталог
C:/.
В операционных системах, не являющихся Windows, используется переменная среды HOME (если она существует), в противном случае возвращается путь из rootPath().
См. также home(), currentPath(), rootPath() и tempPath().
bool QDir::isAbsolute() const
Возвращает true если путь к каталогу абсолютный; в противном случае возвращает false. См. isAbsolutePath().
Примечание: Пути, начинающиеся с двоеточия (:), всегда считаются абсолютными, так как они обозначают QResource.
См. также isRelative(), makeAbsolute() и cleanPath().
[static] bool QDir::isAbsolutePath(const QString &path)
Возвращает true если path абсолютный; возвращает false если он относительный.
Примечание: Пути, начинающиеся с двоеточия (:), всегда считаются абсолютными, так как они обозначают QResource.
См. также isAbsolute(), isRelativePath(), makeAbsolute(), cleanPath() и QResource.
[since 5.9] bool QDir::isEmpty(QDir::Filters filters = Filters(AllEntries | NoDotAndDotDot)) const
Возвращает, является ли каталог пустым.
Эквивалентно count() == 0 с фильтрами QDir::AllEntries | QDir::NoDotAndDotDot, но быстрее, так как просто проверяет, содержит ли каталог хотя бы одну запись.
Примечание: Если не установить флаги filters для включения QDir::NoDotAndDotDot (как в значении по умолчанию), то ни один каталог не будет пустым.
Данная функция была добавлена в Qt 5.9.
См. также count(), entryList() и setFilter().
bool QDir::isReadable() const
Возвращает true если каталог доступен для чтения и мы можем открыть файлы по имени; в противном случае возвращает false.
Предупреждение: Ложное значение этой функции не гарантирует, что файлы в каталоге недоступны.
См. также QFileInfo::isReadable().
bool QDir::isRelative() const
Возвращает true если путь к каталогу относительный; в противном случае возвращает false. (В Unix путь является относительным, если он не начинается с "/").
Примечание: Пути, начинающиеся с двоеточия (:), всегда считаются абсолютными, так как они обозначают QResource.
См. также makeAbsolute(), isAbsolute(), isAbsolutePath() и cleanPath().
[static] bool QDir::isRelativePath(const QString &path)
Возвращает true если path относительный; возвращает false если он абсолютный.
Примечание: Пути, начинающиеся с двоеточия (:), всегда считаются абсолютными, так как они обозначают QResource.
См. также isRelative(), isAbsolutePath() и makeAbsolute().
bool QDir::isRoot() const
Возвращает true если каталог является корневым каталогом; в противном случае возвращает false.
Примечание: Если каталог является символической ссылкой на корневой каталог, эта функция возвращает false. Если вы хотите проверить это, используйте canonicalPath(), например:
QDir dir("/tmp/root_link");
dir = dir.canonicalPath();
if (dir.isRoot())
qWarning("It is a root link"); См. также root() и rootPath().
[static, since 5.6] QChar QDir::listSeparator()
Возвращает разделитель списка путей: ':' в Unix и ';' в Windows.
Данная функция была добавлена в Qt 5.6.
См. также separator().
bool QDir::makeAbsolute()
Преобразует путь к каталогу в абсолютный путь. Если он уже абсолютный, ничего не происходит. Возвращает true если преобразование успешно; в противном случае возвращает false.
См. также isAbsolute(), isAbsolutePath(), isRelative() и cleanPath().
[static] bool QDir::match(const QString &filter, const QString &fileName)
Возвращает true если fileName соответствует шаблону с подстановкой (glob) filter; в противном случае возвращает false. filter может содержать несколько шаблонов, разделенных пробелами или точками с запятой. Сопоставление нечувствительно к регистру.
См. также QRegularExpression::fromWildcard(), entryList() и entryInfoList().
[static] bool QDir::match(const QStringList &filters, const QString &fileName)
Это перегруженная функция.
Возвращает true если fileName соответствует любому из шаблонов с подстановкой (glob) в списке filters; в противном случае возвращает false. Сопоставление нечувствительно к регистру.
См. также QRegularExpression::fromWildcard(), entryList() и entryInfoList().
bool QDir::mkdir(const QString &dirName) const
Создаёт подкаталог с именем dirName.
Возвращает true при успехе; в противном случае возвращает false.
Если каталог уже существует, функция вернёт false.
См. также rmdir().
bool QDir::mkpath(const QString &dirPath) const
Создаёт путь к каталогу dirPath.
Функция создаст все необходимые родительские каталоги для создания каталога.
Возвращает true при успехе; в противном случае возвращает false.
Если путь уже существует, функция вернёт true.
См. также rmpath().
QStringList QDir::nameFilters() const
Возвращает список строк, заданный setNameFilters()
См. также setNameFilters().
QString QDir::path() const
Возвращает путь. Он может содержать символические ссылки, но никогда не содержит избыточных ".", "..", или несколько разделителей.
Возвращаемый путь может быть абсолютным или относительным (см. setPath()).
См. также setPath(), absolutePath(), exists(), cleanPath(), dirName(), absoluteFilePath(), toNativeSeparators() и makeAbsolute().
void QDir::refresh() const
Обновляет информацию о каталоге.
QString QDir::relativeFilePath(const QString &fileName) const
Возвращает путь к fileName, относительный к каталогу.
QDir dir("/home/bob");
QString s;
s = dir.relativeFilePath("images/file.jpg"); // s is "images/file.jpg"
s = dir.relativeFilePath("/home/mary/file.txt"); // s is "../mary/file.txt" См. также absoluteFilePath(), filePath() и canonicalPath().
bool QDir::remove(const QString &fileName)
Удаляет файл fileName.
Возвращает true если файл удалён успешно; в противном случае возвращает false.
[since 5.0] bool QDir::removeRecursively()
Удаляет каталог, включая все его содержимое.
Возвращает true при успехе, иначе false.
Если файл или каталог не могут быть удалены, removeRecursively() продолжает выполнение и пытается удалить как можно больше файлов и подкаталогов, а затем возвращает false.
Если каталог уже был удалён, метод возвращает true (ожидаемый результат уже достигнут).
Примечание: Эта функция предназначена для удаления небольшого каталога внутри приложения (например, временного каталога), но не каталогов, видимых пользователю. Для операций с каталогами, видимыми пользователю, рекомендуется более точно сообщать пользователю об ошибках, предлагать решения в случае ошибок, показывать прогресс во время удаления, поскольку это может занять несколько минут и т.д.
Данная функция была добавлена в Qt 5.0.
bool QDir::rename(const QString &oldName, const QString &newName)
Переименовывает файл или каталог из oldName в newName и возвращает true при успехе; в противном случае возвращает false.
На большинстве файловых систем rename() завершается неудачно только если oldName не существует или если файл с новым именем уже существует. Однако есть и другие причины, по которым rename() может завершиться неудачно. Например, на некоторых файловых системах rename() завершается неудачно, если newName указывает на открытый файл.
Если oldName является файлом (не каталогом), который нельзя переименовать сразу, Qt попытается скопировать oldName в newName и удалить oldName.
См. также QFile::rename().
END_OF_DOCUMENT_MARKERbool QDir::rmdir(const QString &dirName) const
Удаляет директорию, заданную параметром dirName.
Директория должна быть пустой для успешного выполнения rmdir().
Возвращает true при успехе; в противном случае возвращает false.
См. также mkdir().
bool QDir::rmpath(const QString &dirPath) const
Удаляет путь к директории dirPath.
Функция удалит все родительские директории в dirPath, при условии, что они пустые. Это противоположность mkpath(dirPath).
Возвращает true при успехе; в противном случае возвращает false.
См. также mkpath().
[static] QDir QDir::root()
Возвращает корневую директорию.
Директория строится с использованием абсолютного пути к корневой директории, гарантируя, что её path() будет таким же, как и её absolutePath().
См. rootPath() для получения более подробной информации.
См. также drives(), current(), home() и temp().
[static] QString QDir::rootPath()
Возвращает абсолютный путь к корневой директории.
Для Unix-систем возвращает "/". Для файловых систем Windows обычно возвращает "c:/".
См. также root(), drives(), currentPath(), homePath() и tempPath().
[static] QStringList QDir::searchPaths(const QString &prefix)
Возвращает пути поиска для prefix.
См. также setSearchPaths() и addSearchPath().
[static] QChar QDir::separator()
Возвращает разделитель директорий: "/" в Unix и "\" в Windows.
Вам не нужно использовать эту функцию для построения путей к файлам. Если вы всегда используете "/", Qt преобразует ваши пути, чтобы соответствовать используемой операционной системе. Если вы хотите отобразить пути пользователю, используя разделитель операционной системы, используйте toNativeSeparators().
См. также listSeparator().
[static] bool QDir::setCurrent(const QString &path)
Устанавливает текущую рабочую директорию приложения на path. Возвращает true если директория была успешно изменена; в противном случае возвращает false.
См. также current(), currentPath(), home(), root() и temp().
void QDir::setFilter(QDir::Filters filters)
Устанавливает фильтр, используемый функциями entryList() и entryInfoList(), на filters. Фильтр используется для указания типа файлов, которые должны быть возвращены entryList() и entryInfoList(). См. QDir::Filter.
См. также filter() и setNameFilters().
void QDir::setNameFilters(const QStringList &nameFilters)
Устанавливает фильтры имен, используемые функциями entryList() и entryInfoList(), на список фильтров, заданный nameFilters.
Каждый фильтр имени — это фильтр с подстановкой (глоббинг), который понимает * и ? подстановки. См. QRegularExpression::fromWildcard().
Например, следующий код устанавливает три фильтра имени для QDir, чтобы гарантировать, что в списке будут только файлы с расширениями, обычно используемыми для C++ исходных файлов:
QStringList filters;
filters << "*.cpp" << "*.cxx" << "*.cc";
dir.setNameFilters(filters); См. также nameFilters() и setFilter().
void QDir::setPath(const QString &path)
Устанавливает путь к директории на path. Путь очищается от избыточных ".", "..", и повторяющихся разделителей. Проверка существования директории с этим путем не производится; но вы можете проверить это самостоятельно с помощью exists().
Путь может быть абсолютным или относительным. Абсолютные пути начинаются с разделителя директорий "/" (в Windows, возможно, предваряясь указанием диска). Относительные имена файлов начинаются с имени директории или имени файла и указывают путь относительно текущей директории. Пример абсолютного пути — строка "/tmp/quartz", относительный путь может быть "src/fatlib".
См. также path(), absolutePath(), exists(), cleanPath(), dirName(), absoluteFilePath(), isRelative() и makeAbsolute().
[since 6.0] void QDir::setPath(const std::filesystem::path &path)
Это перегруженная функция.
Эта функция была добавлена в Qt 6.0.
[static] void QDir::setSearchPaths(const QString &prefix, const QStringList &searchPaths)
Устанавливает или перезаписывает пути поиска Qt для имён файлов с префиксом prefix на searchPaths.
Для указания префикса имени файла используйте префикс, за которым следует одиночная двоеточие (например, "images:undo.png", "xmldocs:books.xml"). prefix может содержать только буквы или цифры (например, не может содержать двоеточие или косую черту).
Qt использует этот путь поиска для поиска файлов с известным префиксом. Элементы пути поиска проверяются в порядке, начиная с первого.
QDir::setSearchPaths("icons", QStringList(QDir::homePath() + "/images"));
QDir::setSearchPaths("docs", QStringList(":/embeddedDocuments"));
...
QPixmap pixmap("icons:undo.png"); // will look for undo.png in QDir::homePath() + "/images"
QFile file("docs:design.odf"); // will look in the :/embeddedDocuments resource path Префикс имени файла должен быть не менее 2 символов, чтобы избежать конфликтов с буквами дисков в Windows.
Пути поиска могут содержать пути к Системе ресурсов Qt.
См. также searchPaths().
void QDir::setSorting(QDir::SortFlags sort)
Устанавливает порядок сортировки, используемый функциями entryList() и entryInfoList().
sort задаётся путём побитового ИЛИ значений из перечисления QDir::SortFlag.
См. также sorting() и SortFlag.
QDir::SortFlags QDir::sorting() const
Возвращает значение, заданное функцией setSorting().
См. также setSorting() и SortFlag.
[since 5.0] void QDir::swap(QDir &other)
Меняет местами экземпляр QDir с other. Эта функция очень быстрая и никогда не даёт сбоев.
Эта функция была добавлена в Qt 5.0.
[static] QDir QDir::temp()
Возвращает системную временную директорию.
Директория строится с использованием абсолютного канонического пути к временной директории, гарантируя, что её path() будет таким же, как и её absolutePath().
См. tempPath() для получения более подробной информации.
См. также drives(), current(), home() и root().
[static] QString QDir::tempPath()
Возвращает абсолютный канонический путь к системной временной директории.
В Unix/Linux системах это путь в переменной среды TMPDIR или /tmp если TMPDIR не определено. В Windows, это обычно путь в переменной среды TEMP или TMP. Путь, возвращаемый этим методом, не заканчивается разделителем директорий, за исключением случаев, когда это корневая директория (диска).
См. также temp(), currentPath(), homePath() и rootPath().
[static] QString QDir::toNativeSeparators(const QString &pathName)
Возвращает pathName с заменой разделителей '/' на разделители, соответствующие используемой операционной системе.
В Windows, toNativeSeparators("c:/winnt/system32") возвращает "c:\winnt\system32".
Возвращаемая строка может быть такой же, как аргумент, в некоторых операционных системах, например, в Unix.
См. также fromNativeSeparators() и separator().
bool QDir::operator!=(const QDir &dir) const
Возвращает true если у директорий dir и этой директории разные пути или разные настройки сортировки или фильтра; в противном случае возвращает false.
Пример:
// The current directory is "/usr/local"
QDir d1("/usr/local/bin");
d1.setFilter(QDir::Executable);
QDir d2("bin");
if (d1 != d2)
qDebug("They differ"); bool QDir::operator==(const QDir &dir) const
Возвращает true, если директория dir и текущая директория имеют одинаковый путь и одинаковые настройки сортировки и фильтрации; в противном случае возвращает false.
Пример:
// The current directory is "/usr/local"
QDir d1("/usr/local/bin");
QDir d2("bin");
if (d1 == d2)
qDebug("They're the same"); QString QDir::operator[](int pos) const
Возвращает имя файла по позиции pos в списке имён файлов. Эквивалентно entryList().at(index). pos должно быть корректной позицией в списке (т.е., 0 <= pos < count()).
См. также count() и entryList().
Документация макросов
void Q_CLEANUP_RESOURCE(name)
Разгружает ресурсы, указанные в файле .qrc с базовым именем name.
Обычно ресурсы Qt разгружаются автоматически при завершении работы приложения, но если ресурсы находятся в плагине, который разгружается, вызовите Q_CLEANUP_RESOURCE(), чтобы принудительно удалить ваши ресурсы.
Примечание: Этот макрос нельзя использовать в пространстве имён. Пожалуйста, см. документацию Q_INIT_RESOURCE для обходного решения.
Пример:
Q_CLEANUP_RESOURCE(myapp);
См. также Q_INIT_RESOURCE() и Систему ресурсов Qt.
void Q_INIT_RESOURCE(name)
Инициализирует ресурсы, указанные в файле .qrc со значением базового имени name. Обычно, когда ресурсы создаются как часть приложения, они загружаются автоматически при запуске. Макрос Q_INIT_RESOURCE() необходим на некоторых платформах для ресурсов, хранящихся в статической библиотеке.
Например, если ресурсы вашего приложения перечислены в файле с именем myapp.qrc, вы можете убедиться, что ресурсы инициализируются при запуске, добавив эту строку в вашу функцию main():
Q_INIT_RESOURCE(myapp);
Если имя файла содержит символы, которые не могут быть частью допустимого имени функции C++, (например, «-»), их необходимо заменить символом подчёркивания («_»).
Примечание: Этот макрос нельзя использовать в пространстве имён. Его следует вызывать из main(). Если это невозможно, можно использовать следующее обходное решение для инициализации ресурса myapp из функции MyNamespace::myFunction:
inline void initMyResource() { Q_INIT_RESOURCE(myapp); }
namespace MyNamespace
{
...
void myFunction()
{
initMyResource();
}
} См. также Q_CLEANUP_RESOURCE() и Систему ресурсов Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qdir.html