QDir — это удобный класс из библиотеки Qt, предназначенный для управления каталогами и получения информации о файлах. Он позволяет работать с путями, создавать, удалять и фильтровать файлы и папки, а также получать списки содержимого.
Основные возможности QDir
- Получение и изменение текущего каталога
- Перебор файлов и папок
- Фильтрация содержимого по маске, атрибутам и флагам
- Создание и удаление каталогов
- Построение относительных и абсолютных путей
Подключение QDir
#include <QDir> #include <QDebug>
Получение текущего каталога с помощью QDir
QDir currentDir; qDebug() << "Текущий путь:" << currentDir.absolutePath();
Изменение текущего каталога с помощью QDir
QDir dir;
if (dir.cd("Documents")) {
qDebug() << "Перешли в каталог:" << dir.absolutePath();
} else {
qDebug() << "Не удалось перейти в папку 'Documents'";
}
Получение списка файлов с помощью QDir
QDir dir("/home/user/Documents");
QStringList files = dir.entryList(QDir::Files);
for (const QString &file : files) {
qDebug() << "Файл:" << file;
}
Получение только папок с помощью QDir
QDir dir("/home/user");
QStringList folders = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
for (const QString &folder : folders) {
qDebug() << "Папка:" << folder;
}
Фильтрация по расширению с помощью QDir
QDir dir("/home/user/images");
QStringList filters;
filters << "*.jpg" << "*.png";
dir.setNameFilters(filters);
QStringList images = dir.entryList(QDir::Files);
for (const QString &img : images) {
qDebug() << "Изображение:" << img;
}
Создание новой папки с помощью QDir
QDir dir("/home/user");
if (dir.mkdir("NewFolder")) {
qDebug() << "Папка создана.";
} else {
qDebug() << "Не удалось создать папку.";
}
Удаление папки с помощью QDir
QDir dir("/home/user/NewFolder");
if (dir.removeRecursively()) {
qDebug() << "Папка удалена.";
} else {
qDebug() << "Ошибка при удалении.";}
Проверка существования файла или папки с помощью QDir
QDir dir("/home/user/Documents");
if (dir.exists()) {
qDebug() << "Каталог существует.";
} else {
qDebug() << "Каталог не найден.";
}
Построение абсолютного и относительного пути с помощью QDir
QDir dir("/home/user");
QString absolutePath = dir.absoluteFilePath("Documents/file.txt");
QString relativePath = dir.relativeFilePath("/home/user/Documents/file.txt");
qDebug() << "Абсолютный путь:" << absolutePath;
qDebug() << "Относительный путь:" << relativePath;
Получение только читаемых файлов с помощью QDir
QDir dir("/home/user");
QStringList list = dir.entryList(QDir::Files | QDir::Readable, QDir::Name);
for (const QString &file : list) {
qDebug() << "Читаемый файл:" << file;
}
Флаги и фильтры
Флаги QDir::Filters:
QDir::Files— только файлыQDir::Dirs— только каталогиQDir::Hidden— скрытые файлы/папкиQDir::NoDotAndDotDot— исключить.и..
Сортировка QDir::SortFlags:
QDir::Name— по имениQDir::Time— по дате измененияQDir::Size— по размеру
QDir dir("/home/user");
QStringList sortedFiles = dir.entryList(QDir::Files, QDir::Time);
Полезные методы
| Метод | Назначение |
|---|---|
entryList() | список файлов/папок |
mkdir() | создать папку |
remove() | удалить файл |
removeRecursively() | удалить папку со всем содержимым |
setPath() | установить путь |
absoluteFilePath("file.txt") | получить абсолютный путь |
cd("subdir") | перейти в подпапку |
exists() | проверить существование |
QDir — это универсальный инструмент для работы с файловой системой в Qt. Он легко интегрируется с другими Qt-классами (QFile, QFileInfo) и предоставляет мощные средства навигации, фильтрации и управления файлами.
