Класс QDir
Класс QDir предоставляет доступ к структурам каталогов и их содержимому. Подробнее...
| Заголовок: | #include <QDir> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются реентерабельными.
Публичные типы
| перечисление | Фильтр { Каталоги, Все каталоги, Файлы, Диски, БезСимволическихСсылок, …, С учетом регистра } |
| флаги | Фильтры |
| перечисление | ФлагСортировки { Имя, Время, Размер, Тип, БезСортировки, …, С учетом локальных настроек } |
| флаги | ФлагиСортировки |
Публичные функции
| 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::permissions() для получения разрешений и владельца для каждого файла.
Тип 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. Если путь пустой, используется рабочий каталог программы (".").
Эта функция была добавлена в 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. Если путь пустой, используется рабочий каталог программы (".").
См. также 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(). Если QDir является относительным, возвращаемое имя пути также будет относительным. Избыточные множественные разделители или каталоги "." и ".." в fileName не удаляются (см. cleanPath()).
См. также dirName(), absoluteFilePath(), isRelative() и canonicalPath().
std::filesystem::path QDir::filesystemAbsolutePath() const
Возвращает absolutePath() в виде std::filesystem::path.
Эта функция была введена в Qt 6.0.
См. также absolutePath().
std::filesystem::path QDir::filesystemCanonicalPath() const
Возвращает canonicalPath() в виде std::filesystem::path.
Эта функция была введена в Qt 6.0.
См. также canonicalPath().
std::filesystem::path QDir::filesystemPath() const
Возвращает path() в виде std::filesystem::path.
Эта функция была введена в Qt 6.0.
См. также path().
QDir::Filters QDir::filter() const
Возвращает значение, установленное с помощью setFilter().
См. также setFilter().
QString QDir::fromNativeSeparators(const QString &pathName)
Возвращает pathName, используя '/' в качестве разделителя файлов. Например, на Windows, fromNativeSeparators("c:\\winnt\\system32") вернет "c:/winnt/system32".
Возвращаемая строка может быть такой же, как аргумент, на некоторых операционных системах, например, на Unix.
См. также toNativeSeparators() и separator().
QDir QDir::home()
Возвращает домашний каталог пользователя.
Каталог создается с использованием абсолютного пути к домашнему каталогу, гарантируя, что его path() будет таким же, как и его absolutePath().
См. homePath() для получения подробной информации.
См. также drives(), current(), root() и temp().
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().
bool 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.
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" См. также 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.
Каждый фильтр имени — это фильтр с подстановкой (globbing), который понимает * и ? подстановки. См. 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.2/qdir.html