您的位置:

Qt删除文件夹详解

一、从Qt删除文件夹里面的文件

QString dirPath = "Path to directory"; // 文件夹路径
QDir dir(dirPath);
dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); // 过滤掉"."和".."目录
QFileInfoList list = dir.entryInfoList();
for (int i = 0; i < list.size(); i++) {
    QFileInfo fileInfo = list.at(i);
    if (fileInfo.isFile()) { // 如果是文件,删除
        QFile file(fileInfo.filePath());
        file.remove();
    }
    else { // 如果是文件夹,递归删除
        removeDir(fileInfo.filePath());
    }
}

该代码会递归遍历指定文件夹内的所有文件和文件夹,并依次进行删除操作。

二、Qt打开文件夹

QString dirPath = "Path to directory"; // 文件夹路径
QDesktopServices::openUrl(QUrl::fromLocalFile(dirPath));

该代码可以使用系统默认的程序打开指定文件夹。

三、Qt删除文件夹下所有文件

QString dirPath = "Path to directory"; // 文件夹路径
QDir dir(dirPath);
dir.setFilter(QDir::Files); // 过滤掉非文件
foreach(QFileInfo fileInfo, dir.entryInfoList()) {
    QFile::remove(fileInfo.absoluteFilePath()); // 直接删除
}

该代码会删除指定文件夹下的所有文件,不会删除文件夹本身。

四、Qt删除文件夹所有文件报错

在使用删除文件操作时,可能会遇到权限不足的报错,可以使用以下方法进行处理:

QString dirPath = "Path to directory"; // 文件夹路径
QFileInfoList fileList;
QDir dir(dirPath);
fileList = dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot, QDir::Name | QDir::DirsFirst);
foreach(QFileInfo fileInfo, fileList) {
    if(fileInfo.isDir()) { // 如果是文件夹,递归删除
        removeDir(fileInfo.absoluteFilePath());
    }
    else { // 如果是文件,直接删除
        QFile::remove(fileInfo.absoluteFilePath());
    }
}
if(dir.rmdir(dirPath)) { // 如果文件夹内的所有文件都被删除,则删掉这个空文件夹
    qDebug() << "Directory removed";
}
else {
    qDebug() << "Directory remove failed:" << dirPath;
}

该代码会递归遍历指定文件夹内的所有文件和文件夹,并进行删除操作。如果文件夹内的所有文件都被删除,则会删除这个空文件夹。

五、Qt删除文件操作

QString filePath = "Path to file"; // 文件路径
QFile file(filePath);
if (file.remove()) { // 删除文件
    qDebug() << "File removed";
}
else {
    qDebug() << "File remove failed:" << filePath;
}

该代码可以删除指定文件。

六、怎么删除上一层文件夹

可以使用以下代码删除指定文件夹:

QString dirPath = "Path to directory"; // 文件夹路径
QDir dir(dirPath);
dir.cdUp(); // 进入到上一级目录
dir.rmdir(dirPath); // 删除指定文件夹

七、相机怎么删除文件夹

相机删除文件夹一般需要先打开相机的存储卡,并在存储卡内进行操作。可以使用以下代码进行操作:

QString dirPath = "Path to directory in camera"; // 相机存储卡内文件夹路径
QFileInfoList dirInfoList = QDir(dirPath).entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); // 获取所有子文件夹信息
foreach(QFileInfo dirInfo, dirInfoList) {
    QString subDirPath = dirInfo.absoluteFilePath();
    QFileInfoList fileList = QDir(subDirPath).entryInfoList(QDir::Files); // 获取子文件夹内所有文件信息
    foreach(QFileInfo fileInfo, fileList) {
        QFile::remove(fileInfo.absoluteFilePath()); // 删除每个文件
    }
    QDir().rmdir(subDirPath); // 删除空文件夹
}

该代码会递归遍历相机存储卡指定文件夹内的所有文件和文件夹,并进行删除操作。请注意,在删除相机内文件时需要特别小心,避免误删所有文件。

八、Qt删除文件夹的方法

上面介绍了多种删除文件夹和文件的方法,可以根据不同的需求选择不同的方法。

九、QT删除文件夹几天前下的文件夹

可以使用以下代码删除指定几天前创建的文件夹:

QString dirPath = "Path to directory"; // 文件夹路径
int days = 2; // 指定天数
QDateTime expiredTime = QDateTime::currentDateTime().addDays(-days); // 计算过期时间
QDir dir(dirPath);
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); // 过滤掉"."和".."目录
QFileInfoList list = dir.entryInfoList();
for (int i = 0; i < list.size(); i++) {
    QFileInfo fileInfo = list.at(i);
    if(fileInfo.created() < expiredTime) { // 如果创建时间早于过期时间,删除文件夹
        removeDir(fileInfo.absoluteFilePath());
    }
}

该代码会遍历指定文件夹内的所有文件夹,并删除指定几天前创建的文件夹。