QDir使用方法用法介绍(Qt学习之QDir的使用)

一、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();
}

Published by

风君子

独自遨游何稽首 揭天掀地慰生平