Класс 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, SortFlags sort = SortFlags( Name | IgnoreCase ), 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, Filters filters = NoFilter, SortFlags sort = NoSort) const |
| QFileInfoList | entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort) const |
| QStringList | entryList(const QStringList &nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort) const |
| QStringList | entryList(Filters filters = NoFilter, SortFlags sort = NoSort) const |
| bool | exists(const QString &name) const |
| bool | exists() const |
| QString | filePath(const QString &fileName) const |
| Filters | filter() const |
| bool | isAbsolute() 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(Filters filters) |
| void | setNameFilters(const QStringList &nameFilters) |
| void | setPath(const QString &path) |
| void | setSorting(SortFlags sort) |
| 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() и Пример поиска файлов.
Документация типов членов
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 QDir &dir)
Конструктор QDir, создающий объект, являющийся копией объекта QDir для каталога dir.
См. также operator=().
QDir::QDir(const QString &path = QString())
Конструктор QDir, указывающий на указанный каталог path. Если путь пустой, используется рабочая директория программы (".").
См. также currentPath().
QDir::QDir(const QString &path, const QString &nameFilter, SortFlags sort = SortFlags( Name | IgnoreCase ), 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, Filters filters = NoFilter, SortFlags sort = NoSort) const
Возвращает список объектов QFileInfo для всех файлов и каталогов в каталоге, отсортированных в соответствии с фильтрами имен и атрибутов, ранее заданными с помощью setNameFilters() и setFilter(), и отсортированных в соответствии с флагами, заданными с помощью setSorting().
Фильтр имен, фильтр атрибутов файлов и спецификация сортировки могут быть переопределены с помощью аргументов nameFilters, filters и sort.
Возвращает пустой список, если каталог нечитаемый, не существует или ничего не соответствует спецификации.
См. также entryList(), setNameFilters(), setSorting(), setFilter(), isReadable() и exists().
QFileInfoList QDir::entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort) const
Это перегруженная функция.
Возвращает список объектов QFileInfo для всех файлов и каталогов в каталоге, отсортированных в соответствии с фильтрами имен и атрибутов, ранее заданными с помощью setNameFilters() и setFilter(), и отсортированных в соответствии с флагами, заданными с помощью setSorting().
Фильтр атрибутов и спецификация сортировки могут быть переопределены с помощью аргументов filters и sort.
Возвращает пустой список, если каталог нечитаемый, не существует или ничего не соответствует спецификации.
См. также entryList(), setNameFilters(), setSorting(), setFilter(), isReadable() и exists().
QStringList QDir::entryList(const QStringList &nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort) const
Возвращает список имён всех файлов и каталогов в каталоге, отсортированных в соответствии с именами и атрибутами, ранее заданными с помощью setNameFilters() и setFilter(), и отсортированных в соответствии с флагами, установленными с помощью setSorting().
Фильтр имён, фильтр атрибутов файлов и спецификация сортировки могут быть переопределены с помощью аргументов nameFilters, filters и sort.
Возвращает пустой список, если каталог недоступен для чтения, не существует или если ничего не соответствует спецификации.
См. также entryInfoList(), setNameFilters(), setSorting(), и setFilter().
QStringList QDir::entryList(Filters filters = NoFilter, 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().
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::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 может содержать несколько шаблонов, разделённых пробелами или точкой с запятой. Сопоставление не учитывает регистр.
См. также сопоставление шаблонов 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(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(SortFlags sort)
Устанавливает порядок сортировки, используемый методами entryList() и entryInfoList().
sort задаётся путём побитового ИЛИ значений из перечисления QDir::SortFlag.
См. также sorting() и SortFlag.
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.6/qdir.html