一、QDir简介
QDir是Qt中一个用来处理目录及文件的类,它包含一系列成员函数,可以进行文件夹的创建、删除、读取等操作,也可以对文件进行读取、复制、删除等操作。
QDir类引入头文件为:#include <QDir>
二、QDir常用方法
1. 构造函数
QDir类有多个构造函数,常用的有两种:
QDir();
QDir(const QString &path);
第一个构造函数指定了一个空路径,第二个构造函数则以指定的路径来构造一个QDir对象。
例如,以下代码构造了一个QDir对象,并将其路径设为“/usr/local/”:
QDir dir("/usr/local/");
2. 判断目录是否存在
QDir::exists()函数可以用于判断目录是否存在。
bool QDir::exists(const QString &path) const;
例如,以下代码用于判断“/usr/local/”目录是否存在。
if(QDir::exists("/usr/local/")){
// 目录存在
} else {
// 目录不存在
}
3. 创建目录
QDir::mkdir()函数可以用于创建目录。
bool QDir::mkdir(const QString &dirName) const;
例如,以下代码用于在“/usr/local/”目录下创建一个名为“example”的目录。
QDir dir("/usr/local/");
dir.mkdir("example");
4. 删除目录
QDir::rmdir()函数可以用于删除目录。注意:目录必须为空才能被删除。
bool QDir::rmdir(const QString &dirName) const;
例如,以下代码用于删除“/usr/local/example/”目录。
QDir dir("/usr/local/");
dir.rmdir("example");
5. 获取目录下所有文件
QDir::entryList()函数可以用于获取目录下所有文件及文件夹的名称。
QStringList QDir::entryList(const QStringList &nameFilters = QStringList(),
Filters filters = NoFilter, SortFlags sort = NoSort) const;
例如,以下代码用于获取“/usr/local/”目录下所有文件及文件夹的名称。
QDir dir("/usr/local/");
QStringList files = dir.entryList();
foreach(QString file, files){
qDebug() << file;
}
6. 判断是否是文件夹或文件
QDir::isFile()函数用于判断一个路径是否为文件(非目录)。
bool QDir::isFile() const;
QDir::isDir()函数用于判断一个路径是否为目录。
bool QDir::isDir() const;
7. 文件/目录操作
QDir::rename()函数用于重命名文件或目录。
bool QDir::rename(const QString &oldName, const QString &newName);
例如,以下代码用于将“/usr/local/example/oldname”目录重命名为“newname”。
QDir dir("/usr/local/example");
dir.rename("oldname", "newname");
QDir::remove()函数用于删除文件或目录(含所有子目录和文件,慎用)。
bool QDir::remove(const QString &fileName);
例如,以下代码用于删除“/usr/local/example/”目录及其下所有文件和子目录。
QDir dir("/usr/local/");
dir.remove("example");
三、完整示例代码
以下代码实现了一个读取指定目录下所有文件及目录的功能,并且在控制台输出:
#include <QCoreApplication>
#include <QDebug>
#include <QDir>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QDir dir("/usr/local/"); // 创建一个QDir对象
QStringList files = dir.entryList(); // 获取目录下所有文件及目录的名称
foreach(QString file, files){
qDebug() << file; // 输出文件名
}
return a.exec();
}