Класс QDir
Класс QDir предоставляет доступ к структурам каталогов и их содержимому. Подробнее...
| Заголовок: | #include <QDir> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются перевходящими.
Типы Public
| Перечисление | Filter { Dirs, AllDirs, Files, Drives, NoSymLinks, …, CaseSensitive } |
| Флаги | Filters |
| Перечисление | SortFlag { Name, Time, Size, Type, Unsorted, …, LocaleAware } |
| Флаги | SortFlags |
Функции Public
| 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 |
Статические члены Public
| void | addSearchPath(const QString &prefix, const QString &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 в абсолютный.
Навигация и операции с каталогами
Путь к каталогу можно получить с помощью функции 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(). Фильтры атрибутов состоят из побитовой ИЛИ комбинации Filters, и они задаются при вызове setFilter(). Порядок сортировки задается с помощью setSorting() с помощью побитовой ИЛИ комбинации SortFlags.
Вы можете проверить, соответствует ли имя файла фильтру, используя функцию match().
Флаги фильтра и порядка сортировки также могут быть заданы при вызове entryList() и entryInfoList() для переопределения ранее заданного поведения.
Текущий каталог и другие специальные пути
Доступ к некоторым общим каталогам обеспечивается рядом статических функций, которые возвращают объекты QDir. Также существуют соответствующие функции для этих функций, которые возвращают строки:
| QDir | QString | Возвращаемое значение |
|---|---|---|
| current() | currentPath() | Рабочий каталог приложения |
| home() | homePath() | Домашний каталог пользователя |
| root() | rootPath() | Корневой каталог |
| temp() | tempPath() | Временный каталог системы |
Статическую функцию setCurrent() также можно использовать для установки рабочего каталога приложения.
Если вам нужно найти каталог, содержащий исполняемый файл приложения, см. QCoreApplication::applicationDirPath().
Статическая функция 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() и Пример поиска файлов.
Документация по типам членов
enum QDir::Filterflags 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 по оператору ИЛИ.
enum QDir::SortFlagflags 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 по оператору ИЛИ.
Документация по функциям-членам
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=().
QDir &QDir::operator=(QDir &&other)
Перемещает other в этот экземпляр QDir.
Эта функция была введена в Qt 5.2.
END_OF_DOCUMENT_MARKERQDir &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.
Эта функция была добавлена в Qt 4.3.
См. также setSearchPaths().
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().
QFileInfoList 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().
QDir::Filters QDir::filter() const
Возвращает значение, установленное методом setFilter()
См. также setFilter().
[static] QString QDir::fromNativeSeparators(const QString &pathName)
Возвращает pathName, используя '/' в качестве разделителя файлов. Например, в Windows fromNativeSeparators("c:\\winnt\\system32") возвращает "c:/winnt/system32".
Возвращаемая строка может быть такой же, как аргумент, на некоторых операционных системах, например, на Unix.
Эта функция была добавлена в Qt 4.2.
См. также 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().
См. также isRelative(), makeAbsolute(), и cleanPath().
[static] bool QDir::isAbsolutePath(const QString &path)
Возвращает true если path является абсолютным; возвращает false если оно относительное.
См. также isAbsolute(), isRelativePath(), makeAbsolute(), и cleanPath().
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 путь является относительным, если он не начинается с "/").
См. также makeAbsolute(), isAbsolute(), isAbsolutePath(), и cleanPath().
[static] bool QDir::isRelativePath(const QString &path)
Возвращает true если path относительный; возвращает false если абсолютный.
См. также 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] 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, entryList() и entryInfoList().
[static] bool QDir::match(const QStringList &filters, const QString &fileName)
Это перегруженный метод.
Возвращает true если fileName соответствует любому из шаблонов (glob) в списке filters; в противном случае возвращает false. Сопоставление регистронезависимое.
См. также Сопоставление с маской QRegularExpression, 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.
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.
Эта функция была добавлена в Qt 4.3.
См. также 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.
Каждый фильтр имени — это маска (globbing) фильтра, понимающая * и ? маски. См. Сопоставление с маской QRegularExpression.
Например, следующий код устанавливает три фильтра имён для 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().
[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.
Эта функция была введена в Qt 4.3.
См. также searchPaths().
void QDir::setSorting(QDir::SortFlags sort)
Устанавливает порядок сортировки, используемый entryList() и entryInfoList().
sort задаётся путём побитового объединения значений из перечисления QDir::SortFlag.
См. также sorting() и SortFlag.
QDir::SortFlags QDir::sorting() const
Возвращает значение, установленное setSorting()
См. также setSorting() и SortFlag.
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.
Эта функция была введена в Qt 4.2.
См. также 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);
Эта функция была введена в Qt 4.1.
См. также 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-5.14/qdir.html