Класс QDir
Класс QDir предоставляет доступ к структурам каталогов и их содержимому. Подробнее...
| Заголовок: | #include <QDir> |
| qmake: | QT += core |
Примечание: Все функции этого класса являются взаимоисключающими.
Публичные типы
| перечисление | Filter { Dirs, AllDirs, Files, Drives, ..., CaseSensitive } |
| флаги | Filters |
| перечисление | SortFlag { Name, Time, Size, Type, ..., LocaleAware } |
| флаги | SortFlags |
Публичные функции
| QDir(const QDir &dir) | |
| QDir(const QString &path = QString()) | |
| QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries) | |
| ~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 |
| 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 | setSorting(QDir::SortFlags sort) |
| QDir::SortFlags | sorting() const |
| void | swap(QDir &other) |
| bool | operator!=(const QDir &dir) const |
| QDir & | operator=(const QDir &dir) |
| QDir & | operator=(QDir &&other) |
| bool | operator==(const QDir &dir) const |
| QString | operator[](int pos) const |
Статические публичные члены
| 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 предоставляет доступ к структурам каталогов и их содержимому.
Объект 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(). Фильтры по атрибутам состоят из побитового ИЛИ сочетания флагов, и они задаются при вызове 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, объединённых операцией OR.
перечисление 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, объединённых операцией OR.
Документация функций членов
QDir::QDir(const QDir &dir)
Создаёт объект QDir, который является копией объекта QDir для каталога dir.
См. также operator=().
QDir::QDir(const QString &path = QString())
Создаёт объект QDir, указывающий на указанный каталог path. Если путь пустой, используется рабочая директория программы (".").
См. также 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()
Удаляет объект 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().
END_OF_DOCUMENT_MARKERQStringList 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
Возвращает true, если каталог пуст.
Эквивалентно 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.
Примечание: Если каталог является символической ссылкой на корневой каталог, эта функция возвращает true. Если вы хотите проверить это, используйте 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 может содержать несколько шаблонов, разделенных пробелами или точкой с запятой. Сопоставление регистронезависимое.
См. также Сопоставление шаблонов с подстановкой QRegExp, QRegExp::exactMatch(), entryList() и entryInfoList().
[static] bool QDir::match(const QStringList &filters, const QString &fileName)
Это перегруженная функция.
Возвращает true , если fileName соответствует любому из шаблонов с подстановкой (glob) в списке filters; в противном случае возвращает false. Сопоставление регистронезависимое.
См. также Сопоставление шаблонов с подстановкой QRegExp, QRegExp::exactMatch(), 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), который понимает * и ? подстановки. (См. сопоставление с подстановкой в QRegExp.)
Например, следующий код устанавливает три фильтра имен в 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"); QDir &QDir::operator=(const QDir &dir)
Создаёт копию объекта dir и присваивает её этому объекту QDir.
QDir &QDir::operator=(QDir &&other)
Перемещает присвоение other этому экземпляру QDir.
Эта функция была введена в Qt 5.2.
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/archives/qt-5.11/qdir.html