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
) и предоставляет мощные средства навигации, фильтрации и управления файлами.