Qt删除文件和文件夹

本文介绍了一个使用Qt编写的简单程序,该程序能够批量删除指定路径下的文件和文件夹。通过递归的方式,程序实现了对临时目录下所有内容的清理,并记录了删除文件的数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用电脑的时候,有时候我们需要删除文件和文件夹,手动操作一个一个的删除就比较麻烦,有时候某个特定的文件还删除不了,写一个程序来实现删除功能就方便很多,Qt里就有自带的类可以方便的执行删除功能,下面来看具体的示例:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

protected:
    bool deleteDir(const QString &path);

public slots:
    void slotDeleteDirAndFile();

private:
    Ui::MainWindow *ui;
    int m_fileCount;    //统计删除文件的个数
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QFile>
#include <QDir>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(slotDeleteDirAndFile()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::slotDeleteDirAndFile()
{
    QString path = "C:\\Users\\Administrator\\AppData\\Local\\Temp";
    deleteDir(path);
}

bool MainWindow::deleteDir(const QString &path)
{
    if (path.isEmpty()){
          return false;
    }
    QDir dir(path);
    if(!dir.exists()){
        return true;
    }
    dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); //设置过滤
    QFileInfoList fileList = dir.entryInfoList(); // 获取所有的文件信息
    foreach (QFileInfo file, fileList){ //遍历文件信息
        if (file.isFile()){ // 是文件,删除
            bool isDelete = file.dir().remove(file.fileName());
            if(isDelete) {
                m_fileCount++;
            }
            qDebug() << "isDelete= " << isDelete << " m_fileCount = " << m_fileCount << " filename= " << file.fileName();
        }else{ // 递归删除
            deleteDir(file.absoluteFilePath());
        }
    }
    return dir.rmpath(dir.absolutePath()); // 删除文件夹
}

main.cpp文件

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值