Spec-Zone.ru › Qt 5.13

Класс QDir

Класс QDir предоставляет доступ к структурам каталогов и их содержимому. Подробнее...

Заголовок: #include <QDir>
qmake: QT += core
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Примечание: Все функции в этом классе являются повторно-входными.

Публичные типы

перечисление Filter { Dirs, AllDirs, Files, Drives, ..., CaseSensitive }
флаги Filters
перечисление SortFlag { Name, Time, Size, Type, ..., LocaleAware }
флаги SortFlags

Публичные функции

QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)
QDir(const QString &path = QString())
QDir(const QDir &dir)
QDir & operator=(QDir &&other)
QDir & operator=(const QDir &dir)
~QDir()
QString absoluteFilePath(const QString &fileName) const
QString absolutePath() const
QString canonicalPath() const
bool cd(const QString &dirName)
bool cdUp()
uint count() const
QString dirName() const
QFileInfoList entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QFileInfoList entryInfoList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QStringList entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QStringList entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
bool exists(const QString &name) const
bool exists() const
QString filePath(const QString &fileName) const
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
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 используется для управления именами путей, доступа к информации о путях и файлах, а также для управления файловой системой. Он также может использоваться для доступа к системе ресурсов 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() с помощью побитового ИЛИ сочетания флагов сортировки.

Вы можете проверить, соответствует ли имя файла фильтру, используя функцию match().

Флаги фильтра и порядка сортировки также могут быть указаны при вызове entryList() и entryInfoList() для переопределения ранее определенного поведения.

Текущий каталог и другие специальные пути

Доступ к некоторым общим каталогам предоставляется рядом статических функций, которые возвращают объекты QDir. Также есть соответствующие функции для них, которые возвращают строки:

QDir QString Возвращаемое значение
current() currentPath() Рабочий каталог приложения
home() homePath() Домашний каталог пользователя
root() rootPath() Корневой каталог
temp() tempPath() Временный каталог системы

Статическую функцию setCurrent() также можно использовать для установки рабочего каталога приложения.

Если вам нужно найти каталог, содержащий исполняемый файл приложения, см. QCoreApplication::applicationDirPath().

END_OF_DOCUMENT_MARKER

Статический метод drives() возвращает список корневых каталогов для каждого устройства, содержащего файловую систему. В системах Unix это возвращает список, содержащий единственный корневой каталог «/»; в Windows список обычно содержит C:/, и, возможно, другие буквенные обозначения дисков, такие как D:/, в зависимости от настроек системы пользователя.

Обработка путей и строки

Пути, содержащие элементы «.» (текущий каталог), «..» (родительский каталог) и символьные ссылки, могут быть приведены к канонической форме с помощью функции canonicalPath().

Пути также можно упростить, используя функцию cleanPath() для удаления избыточных элементов «/» и «..».

Иногда необходимо отображать путь в представлении, соответствующем платформе пользователя. Статическая функция toNativeSeparators() возвращает копию указанного пути, в котором каждый разделитель каталога заменён соответствующим разделителем для базовой операционной системы.

Примеры

Проверка существования каталога:

QDir dir("example");
if (!dir.exists())
    qWarning("Cannot find the example directory");

(Мы также можем использовать статическую функцию QFile::exists().)

Перемещение по каталогам и чтение файла:

QDir dir = QDir::root();                 // "/"
if (!dir.cd("tmp")) {                    // "/tmp"
    qWarning("Cannot find the \"/tmp\" directory");
} else {
    QFile file(dir.filePath("ex1.txt")); // "/tmp/ex1.txt"
    if (!file.open(QIODevice::ReadWrite))
        qWarning("Cannot create the file %s", file.name());
}

Программа, которая выводит список всех файлов в текущем каталоге (исключая символические ссылки), отсортированные по размеру, по возрастанию:

#include <QDir>
#include <iostream>

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
    QDir dir;
    dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
    dir.setSorting(QDir::Size | QDir::Reversed);

    QFileInfoList list = dir.entryInfoList();
    std::cout << "     Bytes Filename" << std::endl;
    for (int i = 0; i < list.size(); ++i) {
        QFileInfo fileInfo = list.at(i);
        std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10)
                                                .arg(fileInfo.fileName()));
        std::cout << std::endl;
    }
    return 0;
}

См. также QFileInfo, QFile, QFileDialog, QCoreApplication::applicationDirPath() и Пример поиска файлов.

Документация по типам членов

перечисление QDir::Filterфлаги QDir::Filters

Это перечисление описывает доступные параметры фильтрации для QDir, например, для entryList() и entryInfoList(). Значение фильтра задаётся путём комбинирования значений из следующего списка с помощью побитового оператора ИЛИ:

Константа Значение Описание
QDir::Dirs 0x001 Список каталогов, соответствующих фильтрам.
QDir::AllDirs 0x400 Список всех каталогов; т.е. фильтры не применяются к именам каталогов.
QDir::Files 0x002 Список файлов.
QDir::Drives 0x004 Список дисковых дисков (игнорируется в Unix).
QDir::NoSymLinks 0x008 Не включать символические ссылки (игнорируется операционными системами, не поддерживающими символические ссылки).
QDir::NoDotAndDotDot NoDot | NoDotDot Не включать специальные записи «.» и «..».
QDir::NoDot 0x2000 Не включать специальную запись «.».
QDir::NoDotDot 0x4000 Не включать специальную запись «..».
QDir::AllEntries Dirs | Files | Drives Список каталогов, файлов, дисков и символьных ссылок (это не включает прерванные символические ссылки, если не указан параметр System).
QDir::Readable 0x010 Список файлов, к которым у приложения есть доступ на чтение. Значение Readable необходимо комбинировать со значениями Dirs или Files.
QDir::Writable 0x020 Список файлов, к которым у приложения есть доступ на запись. Значение Writable необходимо комбинировать со значениями Dirs или Files.
QDir::Executable 0x040 Список файлов, к которым у приложения есть доступ на выполнение. Значение Executable необходимо комбинировать со значениями Dirs или Files.
QDir::Modified 0x080 Только список файлов, которые были изменены (игнорируется в Unix).
QDir::Hidden 0x100 Список скрытых файлов (в Unix – файлы, начинающиеся с «.»).
QDir::System 0x200 Список системных файлов (в Unix – FIFO, сокеты и файлы устройств; в Windows – файлы .lnk).
QDir::CaseSensitive 0x800 Фильтр должен быть чувствителен к регистру.

Функции, использующие значения перечисления Filter для фильтрации списков файлов и каталогов, включат символические ссылки на файлы и каталоги, если вы не установите значение NoSymLinks.

Стандартно созданный объект QDir не будет фильтровать файлы на основе их разрешений, поэтому entryList() и entryInfoList() вернут все файлы, которые можно читать, записывать или выполнять, или любую комбинацию из этих трёх. Это делает стандартный вариант лёгким для написания и в то же время полезным.

Например, установка флагов Readable, Writable, и Files позволяет отобразить все файлы, к которым у приложения есть доступ на чтение, запись или оба. Если в этой комбинации также включены флаги Dirs и Drives, то можно перечислить все диски, каталоги, все файлы, к которым у приложения есть доступ на чтение, запись или выполнение, а также ссылки на такие файлы/каталоги.

Чтобы получить разрешения для каталога, используйте функцию entryInfoList() для получения связанных объектов QFileInfo, а затем используйте QFileInfo::permissons() для получения разрешений и владельца каждого файла.

Тип Filters является псевдонимом для QFlags<Filter>. Он хранит комбинацию значений Filter с помощью оператора ИЛИ.

перечисление QDir::SortFlagфлаги QDir::SortFlags

Это перечисление описывает доступные параметры сортировки для QDir, например, для entryList() и entryInfoList(). Значение сортировки задаётся путём комбинирования значений из следующего списка с помощью оператора ИЛИ:

Константа Значение Описание
QDir::Name 0x00 Сортировка по имени.
QDir::Time 0x01 Сортировка по времени (времени изменения).
QDir::Size 0x02 Сортировка по размеру файла.
QDir::Type 0x80 Сортировка по типу файла (расширению).
QDir::Unsorted 0x03 Не сортировать.
QDir::NoSort -1 По умолчанию не сортируется.
QDir::DirsFirst 0x04 Сначала каталоги, затем файлы.
QDir::DirsLast 0x20 Сначала файлы, затем каталоги.
QDir::Reversed 0x08 Обратный порядок сортировки.
QDir::IgnoreCase 0x10 Сортировка без учёта регистра.
QDir::LocaleAware 0x40 Сортировка с учётом текущих настроек локали.

Вы можете указать только один из первых четырёх параметров.

Если вы укажете и DirsFirst, и Reversed, каталоги по-прежнему будут сначала, но в обратном порядке; файлы будут отображаться после каталогов также в обратном порядке.

Тип SortFlags является псевдонимом для QFlags<SortFlag>. Он хранит комбинацию значений SortFlag с помощью оператора ИЛИ.

Документация по функциям членов

QDir::QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)

Конструктор QDir с путём path, который фильтрует свои записи по имени с помощью nameFilter и по атрибутам с помощью filters. Он также сортирует имена с помощью sort.

По умолчанию nameFilter – это пустая строка, что ничего не исключает; по умолчанию filters – это AllEntries, что также означает, что ничего не исключается. По умолчанию sort – это Name | IgnoreCase, то есть сортировка по имени без учёта регистра.

Если path – это пустая строка, QDir использует «.» (текущий каталог). Если nameFilter – это пустая строка, QDir использует фильтр имени «*» (все файлы).

Обратите внимание, что path необязательно должен существовать.

См. также exists(), setPath(), setNameFilters(), setFilter(), и setSorting().

QDir::QDir(const QString &path = QString())

Создаёт объект QDir, указывающий на директорию path. Если path пустая, используется рабочая директория программы (".").

См. также currentPath().

QDir::QDir(const QDir &dir)

Создаёт объект QDir, который является копией объекта QDir для директории dir.

См. также operator=().

QDir &QDir::operator=(QDir &&other)

Перемещает other в этот экземпляр QDir.

Эта функция была добавлена в Qt 5.2.

QDir &QDir::operator=(const QDir &dir)

Создаёт копию объекта dir и присваивает её этому объекту QDir.

QDir::~QDir()

Удаляет объект QDir и освобождает его ресурсы. Это не влияет на подлежащую директорию в файловой системе.

QString QDir::absoluteFilePath(const QString &fileName) const

Возвращает абсолютный путь к файлу в директории. Не проверяет, существует ли файл фактически в директории; но см. exists(). Избыточные множественные разделители или директории "." и ".." в fileName не удаляются (см. cleanPath()).

См. также relativeFilePath(), filePath() и canonicalPath().

QString QDir::absolutePath() const

Возвращает абсолютный путь (путь, начинающийся с "/" или с указания диска), который может содержать символические ссылки, но никогда не содержит избыточные ".", ".." или множественные разделители.

См. также setPath(), canonicalPath(), exists(), cleanPath(), dirName() и absoluteFilePath().

[static] void QDir::addSearchPath(const QString &prefix, const QString &path)

Добавляет path в путь поиска для prefix.

Эта функция была добавлена в 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() для преобразования разделителей в соответствующие разделители для операционной системы.

Если каталог профиля текущего пользователя не существует или не может быть получен, будут проверены следующие альтернативы (в указанном порядке), пока не будет найден существующий и доступный путь:

  1. Путь, заданный переменной среды USERPROFILE.
  2. Путь, образованный конкатенацией переменных среды HOMEDRIVE и HOMEPATH.
  3. Путь, заданный переменной среды HOME.
  4. Путь, возвращённый функцией rootPath() (которая использует переменную среды SystemDrive).
  5. Каталог 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 Wildcard Matching.

Например, следующий код устанавливает три фильтра имён в 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 QDir::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 QDir::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.13/qdir.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API